Added optimization for zero?.

original commit: 47195410cbbe7d19ac6e33175fd57bfce6e6c4b3
This commit is contained in:
Vincent St-Amour 2010-07-16 19:46:33 -04:00
parent a421071d91
commit 9fea49db55
3 changed files with 16 additions and 2 deletions

View File

@ -0,0 +1,4 @@
#lang typed/scheme #:optimize
(require racket/unsafe/ops)
(zero? 1)
(zero? (sqrt 3.0))

View File

@ -74,4 +74,9 @@
(pattern (#%plain-app (~and op (~literal exact->inexact)) n:fixnum-expr)
#:with opt
(begin (log-optimization "fixnum to float" #'op)
#'(unsafe-fx->fl n.opt))))
#'(unsafe-fx->fl n.opt)))
(pattern (#%plain-app (~and op (~literal zero?)) n:fixnum-expr)
#:with opt
(begin (log-optimization "fixnum zero?" #'op)
#'(unsafe-fx= n.opt 0))))

View File

@ -85,4 +85,9 @@
(pattern (#%plain-app (~and op (~literal exact->inexact)) f:float-expr)
#:with opt
(begin (log-optimization "float to float" #'op)
#'f.opt)))
#'f.opt))
(pattern (#%plain-app (~and op (~literal zero?)) f:float-expr)
#:with opt
(begin (log-optimization "float zero?" #'op)
#'(unsafe-fl= f.opt 0.0))))