Added optimization for zero?.

This commit is contained in:
Vincent St-Amour 2010-07-16 19:46:33 -04:00
parent 5d7f044488
commit 47195410cb
5 changed files with 24 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

@ -0,0 +1,4 @@
#lang typed/scheme #:optimize
(require racket/unsafe/ops)
(unsafe-fx= 1 0)
(unsafe-fl= (sqrt 3.0) 0.0)

View File

@ -0,0 +1,4 @@
#lang typed/scheme
(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))))