Use sandboxes instead of duplicate files to test results when optimizing.
original commit: 46b2a2113af3e6f8174379880620f7add5b0f079
This commit is contained in:
parent
e291319f96
commit
7b0682b8d0
|
@ -1,4 +1,5 @@
|
|||
#lang typed/racket #:optimize
|
||||
#lang typed/racket
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(apply + (map add1 (list 1 2 3)))
|
||||
(apply * (map add1 (list 1 2 3)))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module begin-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(begin (- 2.0 3.0)
|
||||
(* 2.0 3.0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(begin (- 2.0 3.0)
|
||||
(* 2.0 3.0))
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(module binary-fixnum typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f (All (X) ((Vectorof X) -> Natural)))
|
||||
(define (f v)
|
||||
(bitwise-and (vector-length v) 1)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f (All (X) ((Vectorof X) -> Natural)))
|
||||
(define (f v)
|
||||
(bitwise-and (vector-length v) 1))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module binary-nonzero-fixnum typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(quotient (vector-length '#(1 2 3)) 2))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(quotient (vector-length '#(1 2 3)) 2)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(display (if (number? 3)
|
||||
(+ 2.0 3.0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
;; originally from nucleic3
|
||||
;; cond on substructs, branches were considered dead
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(display (if (number? "eh")
|
||||
(+ 2.0 3.0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module define-begin-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define a (begin (display (- 2.0 3.0))
|
||||
(* 2.0 3.0))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define a (begin (display (- 2.0 3.0))
|
||||
(* 2.0 3.0)))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module define-call-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (cons (+ 1.0 2.0) 3.0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (cons (+ 1.0 2.0) 3.0))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module define-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (+ 1.0 2.0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (+ 1.0 2.0))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module define-pair typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (car '(1 3))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define x (car '(1 3)))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme
|
||||
#:optimize
|
||||
;; to see if the harness supports having the 2 versions of a test being
|
||||
;; written in different languages
|
||||
(module different-langs typed/scheme #:optimize
|
||||
(+ 1 2))
|
||||
(+ 1 2)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module double-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 2.0 2.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 2.0 2.0)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module exact-inexact typed/scheme #:optimize
|
||||
(require racket/flonum)
|
||||
(exact->inexact (expt 10 100))) ; must not be a fixnum
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/flonum)
|
||||
(exact->inexact (expt 10 100)) ; must not be a fixnum
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module fixnum-comparison typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< (vector-length '#(1 2 3)) (string-length "asdf")))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< (vector-length '#(1 2 3)) (string-length "asdf"))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module float-comp typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< 1.0 2.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< 1.0 2.0)
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
(module float-fun typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f (Float -> Float))
|
||||
(define (f x)
|
||||
(+ x 1.0)))
|
||||
#lang typed/racket
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
(: f (Float -> Float))
|
||||
(define (f x)
|
||||
(+ x 1.0))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module float-promotion typed/scheme #:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(+ (quotient 1 1) 2.0)
|
||||
(+ (expt 100 100) 2.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(+ (quotient 1 1) 2.0)
|
||||
(+ (expt 100 100) 2.0)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module flvector-length typed/scheme #:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(flvector-length (flvector 0.0 1.2)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(flvector-length (flvector 0.0 1.2))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module fx-fl typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(exact->inexact 1))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(exact->inexact 1)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(for: ((i : Integer #"123"))
|
||||
(display i))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module in-list typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(for: ((i : Natural '(1 2 3)))
|
||||
(display i)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(for: ((i : Natural '(1 2 3)))
|
||||
(display i))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(for: ((i : Char "123"))
|
||||
(display i))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(for: ((i : Integer (vector 1 2 3)))
|
||||
(display i))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(conjugate (+ 1.0+2.0i 2.0+4.0i))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ (quotient 2 1) 1.0+2.0i 3.0+6.0i)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module invalid-binary-nonzero-fixnum typed/scheme #:optimize
|
||||
(: f ( -> Void))
|
||||
(define (f) ; in a function, to prevent evaluation
|
||||
(display (quotient 4 0)))) ; 2 fixnums, but the second is 0, cannot optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(: f ( -> Void))
|
||||
(define (f) ; in a function, to prevent evaluation
|
||||
(display (quotient 4 0))) ; 2 fixnums, but the second is 0, cannot optimize
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module exact-inexact typed/scheme #:optimize
|
||||
(exact->inexact 1.0)) ; not an integer, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(exact->inexact 1.0) ; not an integer, can't optimize
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module float-comp typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< 1.0 2))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(< 1.0 2)
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module float-promotion typed/scheme #:optimize
|
||||
(/ 1 2.0)) ; result is not a float, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(/ 1 2.0) ; result is not a float, can't optimize
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module invalid-inexact-complex-parts.rkt typed/scheme #:optimize
|
||||
(real-part 1+2i))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(real-part 1+2i)
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module invalid-make-flrectangular typed/scheme #:optimize
|
||||
(make-rectangular 1 2))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(make-rectangular 1 2)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(make-polar 0 0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(: f ((MListof Integer) -> Integer))
|
||||
(define (f x)
|
||||
(mcar x))
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module invalid-sqrt typed/scheme #:optimize
|
||||
(sqrt -2.0)) ; not a nonnegative flonum, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(sqrt -2.0) ; not a nonnegative flonum, can't optimize
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module invalid-vector-ref typed/scheme #:optimize
|
||||
(: f ((Vectorof Integer) -> Integer))
|
||||
(define (f x)
|
||||
(vector-ref x 0))) ; type is (Vectorof Integer), length is unknown, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(: f ((Vectorof Integer) -> Integer))
|
||||
(define (f x)
|
||||
(vector-ref x 0)) ; type is (Vectorof Integer), length is unknown, can't optimize
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module invalid-vector-set typed/scheme #:optimize
|
||||
(: f ((Vectorof Integer) -> Void))
|
||||
(define (f x)
|
||||
(vector-set! x 0 2))) ; type is (Vectorof Integer), length is ot known, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(: f ((Vectorof Integer) -> Void))
|
||||
(define (f x)
|
||||
(vector-set! x 0 2)) ; type is (Vectorof Integer), length is ot known, can't optimize
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module known-vector-length typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2 (vector-length (ann (vector 1 2) (Vector Integer Integer)))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2 (vector-length (ann (vector 1 2) (Vector Integer Integer))))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module let-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(let ((x (+ 3.0 2.0)))
|
||||
(* 9.0 x)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(let ((x (+ 3.0 2.0)))
|
||||
(* 9.0 x))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/racket/base #:optimize
|
||||
#lang typed/racket/base
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
(module make-flrectangular typed/scheme #:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(make-rectangular 1.0 2.2)
|
||||
(make-flrectangular 1.0 2.2))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
(make-rectangular 1.0 2.2)
|
||||
(make-flrectangular 1.0 2.2)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: x (MPairof Integer Float))
|
||||
(define x (mcons 1 1.0))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module n-ary-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 1.0 2.0 3.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 1.0 2.0 3.0)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module nested-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 (+ 3.0 4.0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 (+ 3.0 4.0))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module nested-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 (* 3.0 4.0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 (* 3.0 4.0))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module nested-pair typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cdr '(1 2))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cdr '(1 2)))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module nested-pair2 typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cdr (cons 3 (cons (cons 2 '()) 1)))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cdr (cons 3 (cons (cons 2 '()) 1))))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(module pair-fun typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f ((Listof Integer) -> Integer))
|
||||
(define (f x)
|
||||
(if (null? x)
|
||||
1
|
||||
(car x))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f ((Listof Integer) -> Integer))
|
||||
(define (f x)
|
||||
(if (null? x)
|
||||
1
|
||||
(car x)))
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
(module quote typed/scheme #:optimize
|
||||
'(+ 1.0 2.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
'(+ 1.0 2.0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/racket/base #:optimize
|
||||
#lang typed/racket/base
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module simple-float typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 3.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(+ 2.0 3.0)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module simple-pair typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cons 1 2)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(car (cons 1 2))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(module sqrt typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f (Nonnegative-Float -> Nonnegative-Float))
|
||||
(define (f x)
|
||||
(sqrt x)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: f (Nonnegative-Float -> Nonnegative-Float))
|
||||
(define (f x)
|
||||
(sqrt x))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
(module structs typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define-struct: pt ((x : Integer) (y : Integer)) #:mutable)
|
||||
(define a (pt 3 4))
|
||||
(pt-x a)
|
||||
(set-pt-y! a 5))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(define-struct: pt ((x : Integer) (y : Integer)) #:mutable)
|
||||
(define a (pt 3 4))
|
||||
(pt-x a)
|
||||
(set-pt-y! a 5)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module unary-fixnum-nested typed/scheme #:optimize
|
||||
(require racket/unsafe/ops racket/fixnum)
|
||||
(abs (bitwise-not (length '(1 2 3)))))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops racket/fixnum)
|
||||
(abs (bitwise-not (length '(1 2 3))))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module unary-fixnum typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(bitwise-not 4))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(bitwise-not 4)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module float-unary typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(sin 2.0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(sin 2.0)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops racket/flonum)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
(letrec ((#{f : (Any -> Any)} (lambda: ((x : Any)) (f x)))
|
||||
(#{x : Inexact-Complex} 1.0+2.0i)
|
||||
(#{y : Inexact-Complex} (+ 2.0+4.0i 3.0+6.0i)))
|
||||
(letrec: ((f : (Any -> Any) (lambda: ((x : Any)) (f x)))
|
||||
(x : Inexact-Complex 1.0+2.0i)
|
||||
(y : Inexact-Complex (+ 2.0+4.0i 3.0+6.0i)))
|
||||
(+ x y))
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
|
||||
(require racket/unsafe/ops)
|
||||
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(module vector-length typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-length
|
||||
(vector-ref
|
||||
(ann (vector (vector 1 2) 2 3)
|
||||
(Vector (Vectorof Integer) Integer Integer))
|
||||
0)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-length
|
||||
(vector-ref
|
||||
(ann (vector (vector 1 2) 2 3)
|
||||
(Vector (Vectorof Integer) Integer Integer))
|
||||
0))
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module vector-length typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-length (vector 1 2 3)))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-length (vector 1 2 3))
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
(module vector-ref-set-ref typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: x (Vector Integer String))
|
||||
(define x (vector 1 "1"))
|
||||
(vector-ref x 0)
|
||||
(vector-set! x 1 "2")
|
||||
(vector-ref x 1))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(: x (Vector Integer String))
|
||||
(define x (vector 1 "1"))
|
||||
(vector-ref x 0)
|
||||
(vector-set! x 1 "2")
|
||||
(vector-ref x 1)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module vector-ref typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-ref (ann (vector 1 2) (Vector Integer Integer)) 0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-ref (ann (vector 1 2) (Vector Integer Integer)) 0)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module vector-ref2 typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-ref (vector 1 2 3) 0))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-ref (vector 1 2 3) 0)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(module vector-set-quote typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (ann (vector '(1 2)) (Vector Any))
|
||||
0
|
||||
'(+ 1.0 2.0))) ; we should not optimize under quote
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (ann (vector '(1 2)) (Vector Any))
|
||||
0
|
||||
'(+ 1.0 2.0)) ; we should not optimize under quote
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
(module vector-set typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (ann (vector 1 2) (Vector Integer Integer))
|
||||
0
|
||||
1))
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (ann (vector 1 2) (Vector Integer Integer))
|
||||
0
|
||||
1)
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
(module invalid-vector-set typed/scheme #:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (vector 1 2) 0 2)) ; type is (Vectorof Integer), length is ot known, can't optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(vector-set! (vector 1 2) 0 2) ; type is (Vectorof Integer), length is ot known, can't optimize
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#lang typed/scheme #:optimize
|
||||
#lang typed/scheme
|
||||
#:optimize
|
||||
(require racket/unsafe/ops)
|
||||
(zero? 1)
|
||||
(zero? (sqrt 3.0))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#lang racket
|
||||
(require racket/runtime-path)
|
||||
(require racket/runtime-path racket/sandbox)
|
||||
|
||||
;; since Typed Scheme's optimizer does source to source transformations,
|
||||
;; we compare the expansion of automatically optimized and hand optimized
|
||||
|
@ -23,6 +23,33 @@
|
|||
#'(#f #f #f (#f)))]) ; for cadddr
|
||||
(expand (with-input-from-file file read-syntax))))))))
|
||||
|
||||
|
||||
;; the first line must be the #lang line
|
||||
;; the second line must be #:optimize
|
||||
(define (evaluator file #:optimize [optimize? #f])
|
||||
(call-with-trusted-sandbox-configuration
|
||||
(lambda ()
|
||||
(parameterize ([current-load-relative-directory
|
||||
(build-path here "generic")]
|
||||
[sandbox-memory-limit #f] ; TR needs memory
|
||||
[sandbox-output 'string]
|
||||
[sandbox-namespace-specs
|
||||
(list (car (sandbox-namespace-specs))
|
||||
'typed/racket
|
||||
'typed/scheme)])
|
||||
(let* ((lines (cdr (file->lines file))) ;; drop the #lang line
|
||||
(in (if optimize?
|
||||
lines
|
||||
(cdr lines))) ;; drop the #:optimize
|
||||
(evaluator
|
||||
(make-evaluator 'typed/racket
|
||||
(foldl (lambda (acc new)
|
||||
(string-append new "\n" acc))
|
||||
"" in)))
|
||||
(out (get-output evaluator)))
|
||||
(kill-evaluator evaluator)
|
||||
out)))))
|
||||
|
||||
(define (test gen)
|
||||
(let-values (((base name _) (split-path gen)))
|
||||
(or (regexp-match ".*~" name) ; we ignore backup files
|
||||
|
@ -39,13 +66,7 @@
|
|||
#f))
|
||||
;; optimized and non-optimized versions must evaluate to the
|
||||
;; same thing
|
||||
(or (equal? (with-output-to-string
|
||||
(lambda ()
|
||||
(dynamic-require gen #f)))
|
||||
(with-output-to-string
|
||||
(lambda ()
|
||||
(let ((non-opt-dir (build-path here "non-optimized")))
|
||||
(dynamic-require (build-path non-opt-dir name) #f)))))
|
||||
(or (equal? (evaluator gen) (evaluator gen #:optimize #t))
|
||||
(begin (printf "~a failed: result mismatch\n\n" name)
|
||||
#f))))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user