From 3d95ef650c1908d79f9b2bf5e3086322cdb494bc Mon Sep 17 00:00:00 2001 From: Noel Welsh Date: Thu, 25 Feb 2010 11:48:33 +0000 Subject: [PATCH] Add types for unsafe fixnum operations. This allows support for some sequences; in particular in-range now works in some cases (though still requires type annotations). svn: r18333 --- collects/typed-scheme/private/base-env.ss | 37 +++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/collects/typed-scheme/private/base-env.ss b/collects/typed-scheme/private/base-env.ss index e044a4c0dd..24d39f9d32 100644 --- a/collects/typed-scheme/private/base-env.ss +++ b/collects/typed-scheme/private/base-env.ss @@ -641,6 +641,7 @@ ;; unsafe +[unsafe-vector-ref (-poly (a) ((-vec a) -Nat . -> . a))] [unsafe-vector-length (-poly (a) ((-vec a) . -> . -Nat))] [unsafe-car (-poly (a b) (cl->* @@ -649,6 +650,42 @@ (cl->* (->acc (list (-pair a b)) b (list -cdr))))] +[unsafe-fx+ + (cl-> + [(-Integer -Integer) -Integer] + [(-Nat -Nat) -Nat])] +[unsafe-fx- (-Integer -Integer . -> . -Integer)] +[unsafe-fx* + (cl-> + [(-Integer -Integer) -Integer] + [(-Nat -Nat) -Nat])] +[unsafe-fxquotient (-Integer -Integer . -> . -Integer)] +[unsafe-fxremainder (-Integer -Integer . -> . -Integer)] +[unsafe-fxmodulo (-Integer -Integer . -> . -Integer)] +[unsafe-fxabs (-Integer . -> . -Nat)] + +[unsafe-fxand (-Integer -Integer . -> . -Integer)] +[unsafe-fxior (-Integer -Integer . -> . -Integer)] +[unsafe-fxxor (-Integer -Integer . -> . -Integer)] +[unsafe-fxnot (-Integer . -> . -Integer)] +[unsafe-fxlshift (-Integer -Integer . -> . -Integer)] +[unsafe-fxrshift (-Integer -Integer . -> . -Integer)] + +[unsafe-fx= (-Integer -Integer . -> . -Boolean)] +[unsafe-fx< (-Integer -Integer . -> . -Boolean)] +[unsafe-fx> (-Integer -Integer . -> . -Boolean)] +[unsafe-fx<= (-Integer -Integer . -> . -Boolean)] +[unsafe-fx>= (-Integer -Integer . -> . -Boolean)] +[unsafe-fxmin + (cl-> + [(-Integer -Integer) -Integer] + [(-Nat -Nat) -Nat])] +[unsafe-fxmax + (cl-> + [(-Integer -Integer) -Integer] + [(-Nat -Nat) -Nat])] + + ;; scheme/vector [vector-count (-polydots (a b) ((list