Commit Graph

919 Commits

Author SHA1 Message Date
Sam Tobin-Hochstadt
90d8a3cc13 Generalize mutated variables when inferring types. 2010-06-28 11:12:20 -04:00
Vincent St-Amour
382a45ad6f Fixed the optimizer so that it optimizes float comparisons. 2010-06-25 11:00:26 -04:00
Vincent St-Amour
d6008f9191 Typed Scheme now optimizes (exact->inexact <Integer>) to (->fl <Integer>). 2010-06-25 11:00:25 -04:00
Vincent St-Amour
b345d5f0f0 Typed Scheme now optimizes (fl)vector-length for all vectors and
vector-(ref,set!) for vectors of known length.
2010-06-25 11:00:24 -04:00
Vincent St-Amour
d47221c55d Added better tracing to the optimizer. 2010-06-25 11:00:23 -04:00
Sam Tobin-Hochstadt
3251712ef7 More fixnum improvements. 2010-06-24 18:17:01 -04:00
Sam Tobin-Hochstadt
4b1c62c978 Add Fixnum type. 2010-06-24 18:05:55 -04:00
Sam Tobin-Hochstadt
a33f460b25 recreate selector table automatically. 2010-06-24 16:48:10 -04:00
Sam Tobin-Hochstadt
40ca16bc30 Types are not quotable. 2010-06-24 16:47:25 -04:00
Sam Tobin-Hochstadt
3c8952d63d Use the correct field numbers in substructs.
Maintain table of struct accessors/mutators.
2010-06-24 14:53:38 -04:00
Sam Tobin-Hochstadt
3078807757 Better handling of unsafe identifier generation. 2010-06-24 11:05:55 -04:00
Vincent St-Amour
3c9e7e34db Switched indexing to integers in the typechecker's special cases for
heterogenous vectors and unsafe struct operations.
2010-06-22 18:42:26 -04:00
Vincent St-Amour
7d1040283e Added support for unsafe struct operations to Typed Scheme. 2010-06-22 18:42:25 -04:00
Vincent St-Amour
379d9a2125 Added support for unsafe operations on heterogenous vectors. 2010-06-22 18:29:57 -04:00
Vincent St-Amour
eea31102b0 Moved the types for some byte string operations to
base-env-indexing-abs.rkt.
2010-06-22 18:29:57 -04:00
Vincent St-Amour
192c1fa995 Fixed the types of flvector operations. 2010-06-22 18:29:56 -04:00
Vincent St-Amour
61545c4e75 Made make-vector's type more convenient. 2010-06-22 18:29:56 -04:00
Sam Tobin-Hochstadt
6e1954d79b Add `struct:' 2010-06-22 16:29:35 -04:00
Sam Tobin-Hochstadt
bce2cedf38 Typecheck `map' expression, not just #'map. 2010-06-22 10:12:54 -04:00
Sam Tobin-Hochstadt
4df7d09ef1 Docs for List x ... 2010-06-21 18:30:30 -04:00
Sam Tobin-Hochstadt
0c7c722e16 support `map' over multiple ListDots with the same bound
- also support ListDots + Listof (map errors when not same length)
2010-06-21 18:30:30 -04:00
Sam Tobin-Hochstadt
b8777d20b2 allow optional specifcation of var pattern 2010-06-21 18:30:29 -04:00
Stevie Strickland
034b22d014 Generate dcon-dotted, and substitute for them.
- generated only in the case where we have two ListDots or two ValuesDots
 - or when -> with the same bound, and fixed argument lengts are identical
 - currently errors if there are any 'fixed' portions
2010-06-21 18:30:29 -04:00
Stevie Strickland
9c22701bd3 Take dcon-dotteds and create an appropriate i-subst/dotted entry. 2010-06-21 18:30:29 -04:00
Stevie Strickland
3f7ca52e37 Add fixed part to dcon-dotted. 2010-06-21 18:30:29 -04:00
Sam Tobin-Hochstadt
339add9f78 Implement substitutions as hash tables from vars to subst-rhs.
- add convenience function for generating substitutions
 - give trivial substitution for unreferenced index variables
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
44d46e4cd7 Refactor substitution.
- new file types/substitute
 - use structs for substitutions
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
8990459be6 provide more information in inference failures 2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
692dc025c0 fix fail! to use the correct arguments 2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
9f99c914f3 Fix move-to-dmap functions 2010-06-21 18:30:27 -04:00
Stevie Strickland
b5d4d54d45 The initial shot at extending cgen and friends to take both X and Y.
This doesn't fully work, in that more test cases are broken.  However,
this is mostly due to questionable inference rules in the past, and
so fixing these errors should lead to a more correct inference algorithm.

(i.e. we need to handle things like (List X ... a) (List Y .. b),
where a and b are not the same bound.  We'd started this work before,
but never actually gone through with it, since smashing regular and
dotted type variables into the same environment meant some things
magically worked when they possibly shouldn't have.)
2010-06-21 18:30:26 -04:00
Stevie Strickland
078b57c77d Export the types provide macro. 2010-06-21 18:30:26 -04:00
Stevie Strickland
ec09139e0a Fix up subst-gen to treat vars and idxs separately. 2010-06-21 18:30:26 -04:00
Sam Tobin-Hochstadt
d886331807 Various small assorted fixes. 2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
82e7d281cb More progress on refactoring infer 2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
18f45c4138 Fix a bunch of uses of `infer' et al. 2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
99e499a503 Change inference to take into account index vs regular vars. 2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
e8a591d291 Fix free index computation when the body refers to the bound. 2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
662f982b72 Refactor free variables.
- free-idxs no longer holds free de Bruijn indexes
   This information is not needed, and not stored anywhere
 - free-idxs holds free *index* variables, in the sense of the TOPLAS submission
2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
fe9395fdbf Add case to be fixed 2010-06-21 18:30:23 -04:00
Sam Tobin-Hochstadt
b787c7766c Switch to using functional hash tables for free variables. 2010-06-21 18:30:23 -04:00
Sam Tobin-Hochstadt
a93aecbed7 Special case for (apply values ListDots) 2010-06-21 18:30:20 -04:00
Sam Tobin-Hochstadt
12384c6c3f Change type variable environments from hash tables to sets. 2010-06-21 18:29:59 -04:00
Sam Tobin-Hochstadt
d570006db8 Add index-env.
- Remove Dotted and DottedBoth values from tvar-env
 - Abstract env extension and lookup for tvar/index-env
 - Abstract index inference
 - Remove pointless parameterizations
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
0fb1ac66bd Properly compute Dotted variance for ListDots and ValuesDots. 2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
a9c34dae6a Remove dotted-env. 2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
f7b59f78e9 Generalize ListDots to Listof in inference of loop var types. 2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
a2af89bafd Inference for passing ListDots as Listof. 2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
fd5a662ccc Subtyping between (List T ... a) and (Listof T[Any/a]) 2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
4c3f279ab9 Eliminate expressions with dotted pre-types.
- Now looks for (List T ...) types.
 - special handling of `map', `andmap', `ormap' when list arg is dotted
 - remove tc-dots-unit
2010-06-21 18:29:57 -04:00