From af7665983092993c63747e78a067d72a9d4e3541 Mon Sep 17 00:00:00 2001 From: Fayeed Pawaskar Date: Sun, 10 Sep 2023 21:40:22 +0530 Subject: [PATCH] Removed value method and use deref to get type --- src/arena.rs | 6 ---- src/arithmetic.rs | 2 +- src/indexing.rs | 2 +- src/machine/arithmetic_ops.rs | 18 +++++------ src/machine/heap.rs | 2 +- src/machine/loader.rs | 4 +-- src/machine/machine_state.rs | 2 +- src/machine/machine_state_impl.rs | 6 ++-- src/machine/preprocessor.rs | 2 +- src/machine/system_calls.rs | 52 +++++++++++++++---------------- src/machine/unify.rs | 6 ++-- 11 files changed, 48 insertions(+), 54 deletions(-) diff --git a/src/arena.rs b/src/arena.rs index 8a12fdf3..9434b28d 100644 --- a/src/arena.rs +++ b/src/arena.rs @@ -187,12 +187,6 @@ impl ArenaHeader { #[derive(Debug)] pub struct TypedArenaPtr(ptr::NonNull); -impl TypedArenaPtr { - pub fn value(&self) -> Integer { - unsafe { self.0.as_ref().clone() } - } -} - impl PartialOrd for TypedArenaPtr { fn partial_cmp(&self, other: &Self) -> Option { (**self).partial_cmp(&**other) diff --git a/src/arithmetic.rs b/src/arithmetic.rs index d3d97c4d..a13510b7 100644 --- a/src/arithmetic.rs +++ b/src/arithmetic.rs @@ -372,7 +372,7 @@ impl<'a> ArithmeticEvaluator<'a> { pub(crate) fn rnd_i<'a>(n: &'a Number, arena: &mut Arena) -> Number { match n { &Number::Integer(i) => { - let result = i.value().try_into(); + let result = (&*i).try_into(); if let Ok(value) = result{ fixnum!(Number, value, arena) } else { diff --git a/src/indexing.rs b/src/indexing.rs index 67a2b5e7..54beced1 100644 --- a/src/indexing.rs +++ b/src/indexing.rs @@ -1116,7 +1116,7 @@ pub(crate) fn constant_key_alternatives( } */ Literal::Integer(ref n) => { - let result = n.value().try_into(); + let result = (&**n).try_into(); if let Ok(value) = result { Fixnum::build_with_checked(value).map(|n| { constants.push(Literal::Fixnum(n)); diff --git a/src/machine/arithmetic_ops.rs b/src/machine/arithmetic_ops.rs index 80b4153f..da2f28d6 100644 --- a/src/machine/arithmetic_ops.rs +++ b/src/machine/arithmetic_ops.rs @@ -614,7 +614,7 @@ pub(crate) fn idiv(n1: Number, n2: Number, arena: &mut Arena) -> Result::from(n1.value().div_rem(&*n2)).0, + <(Integer, Integer)>::from((&*n1).div_rem(&*n2)).0, arena, )) } @@ -668,7 +668,7 @@ pub(crate) fn shr(n1: Number, n2: Number, arena: &mut Arena) -> Result { let n1 = Integer::from(n1.get_num()); - let result: Result = n2.value().try_into(); + let result: Result = (&*n2).try_into(); match result { Ok(n2) => { @@ -686,7 +686,7 @@ pub(crate) fn shr(n1: Number, n2: Number, arena: &mut Arena) -> Result { - let result: Result = n2.value().try_into(); + let result: Result = (&*n2).try_into(); match result { Ok(n2) => { @@ -729,7 +729,7 @@ pub(crate) fn shl(n1: Number, n2: Number, arena: &mut Arena) -> Result { let n1 = Integer::from(n1.get_num()); - match n2.value().try_into() as Result { + match (&*n2).try_into() as Result { Ok(n2) => { let n1: u64 = n1.try_into().unwrap(); Ok(Number::arena_from(n1 << n2, arena)) @@ -745,9 +745,9 @@ pub(crate) fn shl(n1: Number, n2: Number, arena: &mut Arena) -> Result match n2.value().try_into() as Result { + (Number::Integer(n1), Number::Integer(n2)) => match (&*n2).try_into() as Result { Ok(n2) => { - let n1: u64 = n1.value().try_into().unwrap(); + let n1: u64 = (&*n1).try_into().unwrap(); Ok(Number::arena_from(Integer::from(n1 << n2), arena)) }, _ => { @@ -881,7 +881,7 @@ pub(crate) fn modulus(x: Number, y: Number, arena: &mut Arena) -> Result::from(n1.value().div_rem(&n2)).1, + <(Integer, Integer)>::from((&*n1).div_rem(&n2)).1, arena, )) } @@ -891,7 +891,7 @@ pub(crate) fn modulus(x: Number, y: Number, arena: &mut Arena) -> Result::from(x.value().div_rem(&*y)).1, + <(Integer, Integer)>::from((&*x).div_rem(&*y)).1, arena, )) } @@ -980,7 +980,7 @@ pub(crate) fn gcd(n1: Number, n2: Number, arena: &mut Arena) -> Result { let n1_clone: Integer = (*n1).clone(); - let n2: isize = n2.value().try_into().unwrap(); + let n2: isize = (&*n2).try_into().unwrap(); Ok(Number::arena_from(Integer::from(n1_clone.gcd(&Integer::from(n2))) as IBig, arena)) } (Number::Float(f), _) | (_, Number::Float(f)) => { diff --git a/src/machine/heap.rs b/src/machine/heap.rs index 1fc757d1..c479162e 100644 --- a/src/machine/heap.rs +++ b/src/machine/heap.rs @@ -259,7 +259,7 @@ pub(crate) fn to_local_code_ptr(heap: &Heap, addr: HeapCellValue) -> Option usize::try_from(n.get_num()).ok(), Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Some(value) }, _ => None, diff --git a/src/machine/loader.rs b/src/machine/loader.rs index e51aa23c..a2580492 100644 --- a/src/machine/loader.rs +++ b/src/machine/loader.rs @@ -1653,7 +1653,7 @@ impl Machine { let arity = self.deref_register(3); let arity = match Number::try_from(arity) { Ok(Number::Integer(n)) if &*n >= &Integer::from(0) && &*n <= &Integer::from(MAX_ARITY) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Ok(value) }, Ok(Number::Fixnum(n)) if n.get_num() >= 0 && n.get_num() <= MAX_ARITY as i64 => { @@ -2230,7 +2230,7 @@ impl Machine { let target_pos = match Number::try_from(target_pos) { Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); value }, Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).unwrap(), diff --git a/src/machine/machine_state.rs b/src/machine/machine_state.rs index 47911e9a..b8f0a7a4 100644 --- a/src/machine/machine_state.rs +++ b/src/machine/machine_state.rs @@ -872,7 +872,7 @@ impl MachineState { } } Ok(Number::Integer(n)) => { - let result = n.value().try_into(); + let result = (&*n).try_into(); if let Ok(value) = result { printer.max_depth = value; diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index 854c7152..90adee38 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -1183,7 +1183,7 @@ impl MachineState { let n = match n { Number::Fixnum(n) => n.get_num() as usize, Number::Integer(n) if (*n).num_ge(&0) && (*n).num_le(&std::usize::MAX) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); value }, _ => { @@ -1408,7 +1408,7 @@ impl MachineState { }, Ok(Number::Fixnum(n)) => n.get_num(), Ok(Number::Integer(n)) => { - let value: i64 = n.value().try_into().unwrap(); + let value: i64 = (&*n).try_into().unwrap(); value }, Err(_) => { @@ -1691,7 +1691,7 @@ impl MachineState { Err(_) => {} }, Ok(Number::Integer(n)) => { - let b: u8 = n.value().try_into().unwrap(); + let b: u8 = (&*n).try_into().unwrap(); bytes.push(b); } diff --git a/src/machine/preprocessor.rs b/src/machine/preprocessor.rs index cc831d94..f7fa110f 100644 --- a/src/machine/preprocessor.rs +++ b/src/machine/preprocessor.rs @@ -66,7 +66,7 @@ fn setup_predicate_indicator(term: &mut Term) -> Result { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Some(value) }, Term::Literal(_, Literal::Fixnum(n)) => usize::try_from(n.get_num()).ok(), diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 96ccd59b..609bcdcd 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -751,7 +751,7 @@ impl MachineState { let max_steps_n = match max_steps { Ok(Number::Fixnum(n)) => Some(n.get_num()), Ok(Number::Integer(n)) => { - let value: i64 = n.value().try_into().unwrap(); + let value: i64 = (&*n).try_into().unwrap(); Some(value) }, @@ -1116,7 +1116,7 @@ impl MachineState { } } Ok(Number::Integer(n)) => { - let n: u32 = n.value().try_into().unwrap(); + let n: u32 = (&*n).try_into().unwrap(); if let Some(c) = std::char::from_u32(n) { string.push(c); continue; @@ -1763,7 +1763,7 @@ impl Machine { let n = match Number::try_from(reg) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).ok(), Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Some(value) }, _ => { @@ -2478,7 +2478,7 @@ impl Machine { addr if addr.is_var() => addr, addr => match Number::try_from(addr) { Ok(Number::Integer(n)) => { - let result: Result = n.value().try_into(); + let result: Result = (&*n).try_into(); if let Ok(value) = result { fixnum_as_cell!(Fixnum::build_with(value as i64)) } else { @@ -2676,7 +2676,7 @@ impl Machine { _ => { match Number::try_from(a2) { Ok(Number::Integer(n)) => { - let n: u32 = n.value().try_into().unwrap(); + let n: u32 = (&*n).try_into().unwrap(); let n = std::char::from_u32(n).and_then(|_| Some(n)); @@ -2846,7 +2846,7 @@ impl Machine { _ => { match Number::try_from(a2) { Ok(Number::Integer(n)) => { - let n: u32 = n.value().try_into().unwrap(); + let n: u32 = (&*n).try_into().unwrap(); let n = std::char::from_u32(n); let c = match n { Some(c) => c, @@ -3083,7 +3083,7 @@ impl Machine { } else { match Number::try_from(addr) { Ok(Number::Integer(n)) => { - let n: u32 = n.value().try_into().unwrap(); + let n: u32 = (&*n).try_into().unwrap(); let n = char::try_from(n); if let Some(c) = n.ok() { write!(&mut stream, "{}", c).unwrap(); @@ -3222,7 +3222,7 @@ impl Machine { } else { match Number::try_from(addr) { Ok(Number::Integer(n)) => { - let n: u8 = n.value().try_into().unwrap(); + let n: u8 = (&*n).try_into().unwrap(); match n { nb => { @@ -3307,7 +3307,7 @@ impl Machine { fixnum_as_cell!(Fixnum::build_with(-1)) } Ok(Number::Integer(n)) => { - let n: Result = n.value().try_into(); + let n: Result = (&*n).try_into(); if let Ok(value) = n { fixnum_as_cell!(Fixnum::build_with(value as i64)) @@ -3463,7 +3463,7 @@ impl Machine { let num = match Number::try_from(self.deref_register(2)) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).unwrap(), - Ok(Number::Integer(n)) => match n.value().try_into() as Result { + Ok(Number::Integer(n)) => match (&*n).try_into() as Result { Ok(u) => { u } @@ -3563,7 +3563,7 @@ impl Machine { } else { match Number::try_from(addr) { Ok(Number::Integer(n)) => { - let n: u32 = n.value().try_into().unwrap(); + let n: u32 = (&*n).try_into().unwrap(); let n = std::char::from_u32(n); if let Some(n) = n { @@ -3914,7 +3914,7 @@ impl Machine { let arity = match Number::try_from(arity) { Ok(Number::Fixnum(n)) => Some(n.get_num() as usize), Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Some(value) }, _ => None, @@ -4240,7 +4240,7 @@ impl Machine { let n = match Number::try_from(len) { Ok(Number::Fixnum(n)) => n.get_num() as usize, - Ok(Number::Integer(n)) => match n.value().try_into() as Result { + Ok(Number::Integer(n)) => match (&*n).try_into() as Result { Ok(n) => n, Err(_) => { let err = self.machine_st.resource_error(len); @@ -4525,7 +4525,7 @@ impl Machine { let status_code: u16 = match Number::try_from(status_code) { Ok(Number::Fixnum(n)) => n.get_num() as u16, Ok(Number::Integer(n)) => { - let n: Result = n.value().try_into(); + let n: Result = (&*n).try_into(); if let Ok(value) = n { value @@ -4806,7 +4806,7 @@ impl Machine { let priority = match Number::try_from(priority) { Ok(Number::Integer(n)) => { - let n: u16 = n.value().try_into().unwrap(); + let n: u16 = (&*n).try_into().unwrap(); n }, Ok(Number::Fixnum(n)) => u16::try_from(n.get_num()).unwrap(), @@ -4959,7 +4959,7 @@ impl Machine { let b = match Number::try_from(addr) { Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); Some(value) }, Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).ok(), @@ -5331,7 +5331,7 @@ impl Machine { let code = match Number::try_from(code) { Ok(Number::Fixnum(n)) => u8::try_from(n.get_num()).unwrap(), Ok(Number::Integer(n)) => { - let n: u8 = n.value().try_into().unwrap(); + let n: u8 = (&*n).try_into().unwrap(); n }, Ok(Number::Rational(r)) => { @@ -5370,7 +5370,7 @@ impl Machine { let n = match Number::try_from(a2) { Ok(Number::Fixnum(bp)) => bp.get_num() as usize, Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); value }, _ => { @@ -5417,7 +5417,7 @@ impl Machine { let arity = match Number::try_from(a3) { Ok(Number::Fixnum(n)) => n.get_num() as usize, Ok(Number::Integer(n)) => { - let result = n.value().try_into(); + let result = (&*n).try_into(); if let Ok(value) = result { value @@ -6065,7 +6065,7 @@ impl Machine { let _: StdRng = SeedableRng::seed_from_u64(n); }, Ok(Number::Integer(n)) => { - let n: u64 = n.value().try_into().unwrap(); + let n: u64 = (&*n).try_into().unwrap(); let _: StdRng = SeedableRng::seed_from_u64(n); }, Ok(Number::Rational(n)) => { @@ -6476,7 +6476,7 @@ impl Machine { let position = match Number::try_from(position) { Ok(Number::Fixnum(n)) => n.get_num() as u64, Ok(Number::Integer(n)) => { - let n: Result = n.value().try_into(); + let n: Result = (&*n).try_into(); if let Ok(n) = n { n } else { @@ -6754,7 +6754,7 @@ impl Machine { let arity = match Number::try_from(arity) { Ok(Number::Fixnum(n)) => n.get_num() as usize, Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); value }, _ => { @@ -6812,7 +6812,7 @@ impl Machine { let index_ptr = match Number::try_from(index_ptr) { Ok(Number::Fixnum(n)) => n.get_num() as usize, Ok(Number::Integer(n)) => { - let value: usize = n.value().try_into().unwrap(); + let value: usize = (&*n).try_into().unwrap(); value }, _ => { @@ -7116,7 +7116,7 @@ impl Machine { let length = match Number::try_from(length) { Ok(Number::Fixnum(n)) => usize::try_from(n.get_num()).unwrap(), - Ok(Number::Integer(n)) => match n.value().try_into() as Result { + Ok(Number::Integer(n)) => match (&*n).try_into() as Result { Ok(u) => u, _ => { self.machine_st.fail = true; @@ -7179,7 +7179,7 @@ impl Machine { let iterations = match Number::try_from(iterations) { Ok(Number::Fixnum(n)) => u64::try_from(n.get_num()).unwrap(), Ok(Number::Integer(n)) => { - let n: Result = n.value().try_into(); + let n: Result = (&*n).try_into(); match n { Ok(i) => i, _ => { @@ -7754,7 +7754,7 @@ impl Machine { } Ok(Number::Integer(n)) => { let value: usize = if n.sign() == Sign::Positive { - UBig::from(n.value().into_parts().1).count_ones() + UBig::from((&*n).clone().into_parts().1).count_ones() } else { 0 }; Number::arena_from(value, &mut self.machine_st.arena) } diff --git a/src/machine/unify.rs b/src/machine/unify.rs index ed14f296..64a9ee04 100644 --- a/src/machine/unify.rs +++ b/src/machine/unify.rs @@ -474,8 +474,8 @@ pub(crate) trait Unifier: DerefMut { match Number::try_from(value) { Ok(n2) => match n2 { Number::Fixnum(n2) if (*n1).num_eq(&n2.get_num()) => {} - Number::Integer(n2) if (*n1).num_eq(&n2.value()) => {} - Number::Rational(n2) if (*n2).num_eq(&n1.value()) => {} + Number::Integer(n2) if (*n1).num_eq(&*n2) => {} + Number::Rational(n2) if (*n2).num_eq(&*n1) => {} _ => { self.fail = true; } @@ -495,7 +495,7 @@ pub(crate) trait Unifier: DerefMut { match Number::try_from(value) { Ok(n2) => match n2 { Number::Fixnum(n2) if (*n1).num_eq(&Integer::from(n2.get_num())) => {} - Number::Integer(n2) if (*n1).num_eq(&n2.value()) => {} + Number::Integer(n2) if (*n1).num_eq(&*n2) => {} Number::Rational(n2) if n1 == n2 => {} _ => { self.fail = true; -- 2.54.0