From b64b49b078e444f0ec9c41a9ecf4543fb397d059 Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 16 May 2011 16:57:59 -0400 Subject: [PATCH] Move layer predicates to their own file. --- collects/typed-scheme/optimizer/float.rkt | 2 +- .../typed-scheme/optimizer/numeric-utils.rkt | 22 +++++++++++++++++++ collects/typed-scheme/optimizer/utils.rkt | 17 +------------- 3 files changed, 24 insertions(+), 17 deletions(-) create mode 100644 collects/typed-scheme/optimizer/numeric-utils.rkt diff --git a/collects/typed-scheme/optimizer/float.rkt b/collects/typed-scheme/optimizer/float.rkt index 68775017ed..b8c7a303ce 100644 --- a/collects/typed-scheme/optimizer/float.rkt +++ b/collects/typed-scheme/optimizer/float.rkt @@ -5,7 +5,7 @@ (for-template racket/base racket/flonum racket/unsafe/ops racket/math) "../utils/utils.rkt" (types numeric-tower) - (optimizer utils fixnum)) + (optimizer utils numeric-utils fixnum)) (provide float-opt-expr float-arg-expr) diff --git a/collects/typed-scheme/optimizer/numeric-utils.rkt b/collects/typed-scheme/optimizer/numeric-utils.rkt new file mode 100644 index 0000000000..f1c334a978 --- /dev/null +++ b/collects/typed-scheme/optimizer/numeric-utils.rkt @@ -0,0 +1,22 @@ +#lang racket/base + +(require syntax/parse + "../utils/utils.rkt" + (types numeric-tower) + (optimizer utils)) + +(provide (all-defined-out)) + +;; layer predicates +;; useful in some cases where subtyping won't do +(define (in-integer-layer? t) + (subtypeof? t -Int)) +(define (in-rational-layer? t) + (and (subtypeof? t -Rat) + (not (subtypeof? t -Int)))) +(define (in-float-layer? t) + (subtypeof? t -Flonum)) +(define (in-real-layer? t) + (and (subtypeof? t -Real) + (not (subtypeof? t -Rat)) + (not (subtypeof? t -Flonum)))) diff --git a/collects/typed-scheme/optimizer/utils.rkt b/collects/typed-scheme/optimizer/utils.rkt index 7ed68bcb03..0288e1302a 100644 --- a/collects/typed-scheme/optimizer/utils.rkt +++ b/collects/typed-scheme/optimizer/utils.rkt @@ -4,14 +4,13 @@ racket/dict syntax/id-table racket/syntax unstable/syntax "../utils/utils.rkt" (for-template scheme/base) - (types type-table utils subtype numeric-tower) + (types type-table utils subtype) (rep type-rep)) (provide *log-file* *log-to-log-file?* log-optimization *log-optimizations?* log-close-call *log-close-calls?* *show-optimized-code* subtypeof? isoftype? - in-integer-layer? in-rational-layer? in-float-layer? in-real-layer? mk-unsafe-tbl n-ary->binary unboxed-gensym reset-unboxed-gensym @@ -69,20 +68,6 @@ (match (type-of s) [(tc-result1: (== t type-equal?)) #t] [_ #f])) -;; layer predicates -;; useful in some cases where subtyping won't do -(define (in-integer-layer? t) - (subtypeof? t -Int)) -(define (in-rational-layer? t) - (and (subtypeof? t -Rat) - (not (subtypeof? t -Int)))) -(define (in-float-layer? t) - (subtypeof? t -Flonum)) -(define (in-real-layer? t) - (and (subtypeof? t -Real) - (not (subtypeof? t -Rat)) - (not (subtypeof? t -Flonum)))) - ;; generates a table matching safe to unsafe promitives (define (mk-unsafe-tbl generic safe-pattern unsafe-pattern) (for/fold ([h (make-immutable-free-id-table)]) ([g generic])