check JIT and extflonum operations that are not supported

Goes with 80f84f2132.
This commit is contained in:
Matthew Flatt 2019-02-02 19:55:26 -07:00
parent 80f84f2132
commit 941fe38cee

View File

@ -930,6 +930,43 @@
(bin-exact 5 'check-not-unsafe-undefined 5 'check-not-unsafe-undefined #:bad-value 'unsafe-undefined) (bin-exact 5 'check-not-unsafe-undefined 5 'check-not-unsafe-undefined #:bad-value 'unsafe-undefined)
) )
;; Even if extflonums are not available, check that uses don't
;; confuse the JIT
(let ()
(define-syntax-rule (check-jit-ok (proc arg ...))
(test 'no (eval '(lambda (? arg ...)
(if ?
(proc arg ...)
'no)))
#f 'arg ...))
(check-jit-ok (extfl+ x y))
(check-jit-ok (extfl* x y))
(check-jit-ok (extfl- x y))
(check-jit-ok (extfl/ x y))
(check-jit-ok (extflmin x y))
(check-jit-ok (extflmax x y))
(check-jit-ok (extfl< x y))
(check-jit-ok (extfl> x y))
(check-jit-ok (extfl<= x y))
(check-jit-ok (extfl>= x y))
(check-jit-ok (extfl= x y))
(check-jit-ok (extflabs x))
(check-jit-ok (extflsqrt x))
(check-jit-ok (extflsin x))
(check-jit-ok (extflcos x))
(check-jit-ok (extfltan x))
(check-jit-ok (extflasin x))
(check-jit-ok (extflacos x))
(check-jit-ok (extflatan x))
(check-jit-ok (extfllog x))
(check-jit-ok (extflexp x))
(check-jit-ok (extflexpt x y))
(check-jit-ok (->extfl x y))
(check-jit-ok (fx->extfl x y))
(check-jit-ok (extflvector-length x))
(check-jit-ok (extflvector-ref x y))
(check-jit-ok (extflvector-set! x y z)))
(let ([test-setter (let ([test-setter
(lambda (make-X def-val set-val set-name set ref 3rd-all-ok?) (lambda (make-X def-val set-val set-name set ref 3rd-all-ok?)