From 8ac4f3d29b4d3fe86c35d1cea7bb9204cfc0025a Mon Sep 17 00:00:00 2001 From: Asumu Takikawa Date: Wed, 15 Jun 2016 05:09:57 -0400 Subject: [PATCH] Add a few more serialization optimizations --- typed-racket-lib/typed-racket/env/init-envs.rkt | 13 +++++++++++-- .../typed-racket/types/struct-table.rkt | 3 ++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/typed-racket-lib/typed-racket/env/init-envs.rkt b/typed-racket-lib/typed-racket/env/init-envs.rkt index 1c919c0a..9a11e7a2 100644 --- a/typed-racket-lib/typed-racket/env/init-envs.rkt +++ b/typed-racket-lib/typed-racket/env/init-envs.rkt @@ -111,6 +111,8 @@ (int-err "Base type ~a not in predefined-type-table" n)] [(B: nat) `(make-B ,nat)] [(F: sym) `(make-F (quote ,sym))] + [(Pair: ty (Listof: ty)) + `(-ne-lst ,(type->sexp ty))] [(Pair: left right) `(make-Pair ,(type->sexp left) ,(type->sexp right))] [(ListDots: type dbound) @@ -120,7 +122,7 @@ [(Vector: ty) `(make-Vector ,(type->sexp ty))] [(HeterogeneousVector: elems) - `(make-HeterogeneousVector (list ,@(map type->sexp elems)))] + `(-vec* ,@(map type->sexp elems))] [(Box: ty) `(make-Box ,(type->sexp ty))] [(Channel: ty) @@ -148,11 +150,13 @@ [(Continuation-Mark-Keyof: ty) `(make-Continuation-Mark-Keyof ,(type->sexp ty))] [(Sequence: tys) - `(make-Sequence (list ,@(map type->sexp tys)))] + `(-seq ,@(map type->sexp tys))] [(Syntax: ty) `(make-Syntax ,(type->sexp ty))] [(Listof: elem-ty) `(-lst ,(type->sexp elem-ty))] + [(Param: ty ty) + `(-Param ,(type->sexp ty))] [(Param: in out) `(make-Param ,(type->sexp in) ,(type->sexp out))] [(Hashtable: key val) @@ -198,10 +202,15 @@ ,(object->sexp obj))] [(AnyValues: prop) `(make-AnyValues ,(prop->sexp prop))] + [(Union: (list (Value: vs) ...)) + `(one-of/c ,@(for/list ([v (in-list vs)]) + `(quote ,v)))] [(Union: elems) (split-union elems)] [(Intersection: elems) `(make-Intersection (set ,@(for/list ([elem (in-immutable-set elems)]) (type->sexp elem))))] + [(Name: stx 0 #t) + `(-struct-name (quote-syntax ,stx))] [(Name: stx args struct?) `(make-Name (quote-syntax ,stx) ,args ,struct?)] [(fld: t acc mut) diff --git a/typed-racket-lib/typed-racket/types/struct-table.rkt b/typed-racket-lib/typed-racket/types/struct-table.rkt index 7eae0802..907e93fd 100644 --- a/typed-racket-lib/typed-racket/types/struct-table.rkt +++ b/typed-racket-lib/typed-racket/types/struct-table.rkt @@ -6,7 +6,8 @@ (prefix-in c: (contract-req)) (rep type-rep prop-rep object-rep) (utils tc-utils) - (env init-envs env-utils)) + (env init-envs env-utils) + (types abbrev)) (define struct-fn-table (make-free-id-table))