mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
Type inference: Use &u64-max instead of #xffff...
* module/language/cps/types.scm: Use &u64-max where possible.
This commit is contained in:
parent
1a2ab83bcf
commit
58e508b569
1 changed files with 7 additions and 7 deletions
|
@ -742,9 +742,9 @@ minimum, and maximum."
|
|||
(define! result &flonum (&min f64) (&max f64)))
|
||||
|
||||
(define-type-checker (scm->u64 scm)
|
||||
(check-type scm &exact-integer 0 #xffffffffffffffff))
|
||||
(check-type scm &exact-integer 0 &u64-max))
|
||||
(define-type-inferrer (scm->u64 scm result)
|
||||
(restrict! scm &exact-integer 0 #xffffffffffffffff)
|
||||
(restrict! scm &exact-integer 0 &u64-max)
|
||||
(define! result &u64 (&min/0 scm) (&max/u64 scm)))
|
||||
(define-type-aliases scm->u64 load-u64)
|
||||
|
||||
|
@ -1004,9 +1004,9 @@ minimum, and maximum."
|
|||
(define-type-inferrer (uadd a b result)
|
||||
;; Handle wraparound.
|
||||
(let ((max (+ (&max/u64 a) (&max/u64 b))))
|
||||
(if (<= max #xffffffffffffffff)
|
||||
(if (<= max &u64-max)
|
||||
(define! result &u64 (+ (&min/0 a) (&min/0 b)) max)
|
||||
(define! result &u64 0 #xffffffffffffffff))))
|
||||
(define! result &u64 0 &u64-max))))
|
||||
(define-type-aliases uadd uadd/immediate)
|
||||
|
||||
(define-simple-type-checker (sub &number &number))
|
||||
|
@ -1025,7 +1025,7 @@ minimum, and maximum."
|
|||
;; Handle wraparound.
|
||||
(let ((min (- (&min/0 a) (&max/u64 b))))
|
||||
(if (< min 0)
|
||||
(define! result &u64 0 #xffffffffffffffff)
|
||||
(define! result &u64 0 &u64-max)
|
||||
(define! result &u64 min (- (&max/u64 a) (&min/0 b))))))
|
||||
(define-type-aliases usub usub/immediate)
|
||||
|
||||
|
@ -1077,9 +1077,9 @@ minimum, and maximum."
|
|||
(define-type-inferrer (umul a b result)
|
||||
;; Handle wraparound.
|
||||
(let ((max (* (&max/u64 a) (&max/u64 b))))
|
||||
(if (<= max #xffffffffffffffff)
|
||||
(if (<= max &u64-max)
|
||||
(define! result &u64 (* (&min/0 a) (&min/0 b)) max)
|
||||
(define! result &u64 0 #xffffffffffffffff))))
|
||||
(define! result &u64 0 &u64-max))))
|
||||
(define-type-aliases umul umul/immediate)
|
||||
|
||||
(define-type-checker (div a b)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue