From 1d1d8bacad035fc1609f7444dd207a92b395d5ae Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Mon, 17 Feb 2014 18:22:02 -0500 Subject: [PATCH] Swap remaining unsafe and chaperone-unsafe operation in the TR optimizer. Fixes the fix in aba046a92d42. --- .../typed-racket/optimizer/vector.rkt | 4 ++-- .../tests/vector-length-impersonator.rkt | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/vector-length-impersonator.rkt diff --git a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/vector.rkt b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/vector.rkt index 7b297676e5..db64d9a5a6 100644 --- a/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/vector.rkt +++ b/pkgs/typed-racket-pkgs/typed-racket-lib/typed-racket/optimizer/vector.rkt @@ -75,7 +75,7 @@ [new-v v.opt]) ;; do the impersonator check up front, to avoid doing it twice (length and op) (if (impersonator? new-v) - (if #,(let ([one-sided #'(unsafe-fx< new-i (unsafe-vector*-length new-v))]) + (if #,(let ([one-sided #'(unsafe-fx< new-i (unsafe-vector-length new-v))]) (if i-known-nonneg? ;; we know it's nonnegative, one-sided check one-sided @@ -84,7 +84,7 @@ (op.unsafe new-v new-i new.opt ...) #,safe-fallback) ; will error. to give the right error message ;; not an impersonator, can use unsafe-vector* ops - (if #,(let ([one-sided #'(unsafe-fx< new-i (unsafe-vector-length new-v))]) + (if #,(let ([one-sided #'(unsafe-fx< new-i (unsafe-vector*-length new-v))]) (if i-known-nonneg? one-sided #`(and (unsafe-fx>= new-i 0) diff --git a/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/vector-length-impersonator.rkt b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/vector-length-impersonator.rkt new file mode 100644 index 0000000000..c3517da0a6 --- /dev/null +++ b/pkgs/typed-racket-pkgs/typed-racket-test/tests/typed-racket/optimizer/tests/vector-length-impersonator.rkt @@ -0,0 +1,23 @@ +#;#; +#<