Commit Graph

1244 Commits

Author SHA1 Message Date
Vincent St-Amour
3aae29501e Bytes are fixnums.
original commit: c4ae44123f74de07933d1c6edfb25be4609af6dd
2010-07-21 21:09:41 -04:00
Vincent St-Amour
43683352c5 Improved behavior of coercions with n-ary arithmeric operations.
original commit: d078305a59368156e0c977798af4cb805bc3b679
2010-07-21 21:09:41 -04:00
Vincent St-Amour
53f7550b51 Added type signatures for operations on inexact complexes and floats.
original commit: a31d7b60c8e6911f7b77c3a6f96af2c37da36b9e
2010-07-21 21:09:40 -04:00
Vincent St-Amour
545a02dfe6 Changed the interface to typed racket's test harness.
original commit: b13075a1c0679ecf20cc6c84224131c45f455399
2010-07-21 21:09:40 -04:00
Vincent St-Amour
9fea49db55 Added optimization for zero?.
original commit: 47195410cbbe7d19ac6e33175fd57bfce6e6c4b3
2010-07-21 21:09:40 -04:00
Vincent St-Amour
b71fbae36a Further fixes in overlap checking.
Rhss of code dispatching on overlapping structs are no longer
considered dead, and as such, are now typechecked.

Had to fix a test that passed only because some not-really-dead code
was not being typechecked.
(cherry picked from commit 4d5b50dee9e04aee167a7e04fbbe23526131fcad)

original commit: e0614cfed24dfc9e7f89b9a8c77e7930695b0269
2010-07-18 18:58:02 -04:00
Stevie Strickland
0161cda2d4 Two fixes in overlap checking.
- Names were not being resolved, so a superstruct name and substruct name
   could be seen as non-overlapping.
 - Struct parents were not checked in the overlapping algorithm.
(cherry picked from commit 654b7df1decd52763ffedcdc507a4bf367b1cecf)

original commit: 3884d5661022ef970a77f127e7a58d052760d635
2010-07-18 18:58:02 -04:00
Vincent St-Amour
1130482725 Documented the optimizer.
(cherry picked from commit 8d6230956dc8c207c097a389fa1f0c7273bb55b7)

original commit: 536551ce5ec30081a4823a21512e8ecbfc448bbf
2010-07-18 18:57:41 -04:00
Vincent St-Amour
a421071d91 Added whitespace to the typed racket test harness.
original commit: 8aa4fae613c3f2c99dd5bb145727db94916df537
2010-07-16 19:08:21 -04:00
Vincent St-Amour
8f088b820b Don't abort typed racket's tests if the main tests fail.
original commit: 8563f02ba82edd822f0e6a6b39ff915d5708587a
2010-07-16 19:08:21 -04:00
Vincent St-Amour
40d4840ae1 Fixed unsafe optimization that considered floats as complexes.
original commit: 60bfce14bc0166742fed7675b81d8c5c0dcec2d4
2010-07-16 19:08:20 -04:00
Vincent St-Amour
134fb72de1 Further fixes in overlap checking.
Rhss of code dispatching on overlapping structs are no longer
considered dead, and as such, are now typechecked.

Had to fix a test that passed only because some not-really-dead code
was not being typechecked.

original commit: 4d5b50dee9e04aee167a7e04fbbe23526131fcad
2010-07-16 19:08:19 -04:00
Stevie Strickland
f3a78d1e10 Two fixes in overlap checking.
- Names were not being resolved, so a superstruct name and substruct name
   could be seen as non-overlapping.
 - Struct parents were not checked in the overlapping algorithm.

original commit: 654b7df1decd52763ffedcdc507a4bf367b1cecf
2010-07-16 19:08:19 -04:00
Vincent St-Amour
eb5e5f55d6 Documented the optimizer.
original commit: 8d6230956dc8c207c097a389fa1f0c7273bb55b7
2010-07-16 19:08:18 -04:00
Vincent St-Amour
1657089284 Added mutable pair optimizations.
original commit: fc29e7e8562e4b00c6e7de5882d8ccf374051ca1
2010-07-16 12:22:16 -04:00
Vincent St-Amour
295b5daa2d Fixed an infinite loop.
original commit: f21454e71141feb491c88cf7f83636ee55c76775
2010-07-16 12:22:16 -04:00
Vincent St-Amour
210446e679 The imaginary parts of reals are ignored when doing complex division.
original commit: c587038b339b98ea14f90d683706c470aed05f24
2010-07-16 12:22:15 -04:00
Vincent St-Amour
4da58f05c4 Fixnums and integers can now be coerced for complex operations.
original commit: 443d8b9f917055d051844bb1cd4078a75dcdd592
2010-07-16 12:22:15 -04:00
Vincent St-Amour
b6597e15ed The imaginary parts of inexact reals are ignored when doing complex multiplication.
original commit: c645aa7ebcb6f53686bee78caf3a66af51c36142
2010-07-16 12:22:15 -04:00
Vincent St-Amour
9c89287b24 Fixed bugs in the tests.
original commit: b0788372ea1fc619036656b88aab1f4736a4d5e3
2010-07-16 12:22:14 -04:00
Vincent St-Amour
c413450d2c Better error reporting by the optimizer's test harness.
original commit: 566aeedb598dbc2788ff4360bb23177fbdd74a30
2010-07-16 12:22:14 -04:00
Vincent St-Amour
9c1a9c4661 The optimizer's test harness now makes sure that optimized and
non-optimized versions of the same code evaluate to the same thing.

Unfortunately, this leads to a lot of code duplication. We can't
abstract over optimization like we do for the benchmarks since the
wrapper module would interfere with testing expanded code for
equality.

original commit: 7fb1b41a28c1a082e5f726bbc2acab4e2cc0e5fb
2010-07-16 12:22:14 -04:00
Vincent St-Amour
5f878b83bc The imaginary parts of inexact reals are ignored when doing complex
addition or subtraction.

original commit: 748e9e47ad65c31d653907623b17689b47c76269
2010-07-16 12:22:13 -04:00
Vincent St-Amour
6ec1b3686b Added coercions for floats with unboxed complex operations.
However, this generates superfluous operations involving their
imaginary part of 0.

original commit: 025af5b815503cb4aa64f0a253204016ccba7383
2010-07-16 12:22:13 -04:00
Vincent St-Amour
f5c518398f Enabled optimization of complex conjugate at the top level of complex operations.
original commit: fff71e6a1d5746bf30ec7b3d64ec63ccd43f8065
2010-07-16 12:22:12 -04:00
Vincent St-Amour
4e3f1c1e4b Added unboxed complex conjugate.
original commit: 063211d92263267b8e6b2703af70d9a46e7186bf
2010-07-16 12:22:12 -04:00
Vincent St-Amour
19781fc153 Added optimizations for iterating over vectors and strings.
original commit: 0b0da84eba4fe7dcab87e4e5eed5dd213de2dc9f
2010-07-16 12:22:12 -04:00
Vincent St-Amour
70cfe1b953 Added dead code elimination.
original commit: 1e550139aa67631ffc965027584284b61453b634
2010-07-16 12:22:11 -04:00
Vincent St-Amour
52559ccd98 Better internal error reporting.
original commit: 58fe07ad70b74345e65ccf58171dc73e96be6b2b
2010-07-16 12:22:11 -04:00
Vincent St-Amour
a4cb468a71 Various fixnum unsafe operations improvements.
original commit: b7229487a59d3fa53f92bffb9f7374ab28bb8032
2010-07-16 12:22:11 -04:00
Vincent St-Amour
c05f2797aa Added a test for cross-module struct optimization.
original commit: 4e6fc3154bd286d3edcd36a25bfc672cc6a0659d
2010-07-16 12:22:10 -04:00
Vincent St-Amour
8d95570bcb Added types for sequence functions.
original commit: 4a8113eac6adfd68533a0a134ba8b1434846da97
2010-07-16 12:22:10 -04:00
Vincent St-Amour
7849444de2 Fixed the type for fxrshift.
original commit: 85b96a98b3f3ae2cb89f157bbf2ee3a83a5c365e
2010-07-16 12:22:10 -04:00
Vincent St-Amour
4d23f3416c Added types for byte-string I/O functions.
original commit: 8c840a22825bd6f2723e02a8ff56d76ffaa66367
2010-07-16 12:22:09 -04:00
Vincent St-Amour
33f4ea048d Added types for integer/bytes functions.
original commit: 3dbbd6d3fc47e3f23fee85bfcfe53d2827f18db5
2010-07-16 12:22:09 -04:00
Vincent St-Amour
9a06f49bce Added type for collect-garbage.
original commit: abee5a4db7633ccbc3daff77d5ab80594756bea3
2010-07-16 12:22:09 -04:00
Ryan Culpepper
f3054a84c0 Added uses of unstable/struct
original commit: 07f57aac9b3f52552397bd53597de192ff62fbbc
2010-07-13 12:07:47 -06:00
Robby Findler
7477ced0dc rewrote an ->d contract so that it would work with a let*-style scoping
original commit: 41cfcbe862d48722d0efef76d08b14b0ec428498
2010-07-10 10:01:25 -05:00
Sam Tobin-Hochstadt
91d6ac64d1 remove debugging printf
original commit: e28b60e44fde524c520c62f3fe54b9f6dac04b9d
2010-07-09 14:06:46 -04:00
Sam Tobin-Hochstadt
e103e44bc1 Fix missing unquote
original commit: d030d0631d8cb77888ba8a53843b0fb8e4b4c0dc
2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
d3be8100a0 add variance helper functions
original commit: a84796d8d7c7696ee635308ebf173c375466ebb3
2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
ac2e4153b0 add `make-constant'
original commit: c6fb95d44d2869baa2f53f3f8dba04b19620da81
2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
87bf9dc23d generalize inferred types for invariant positions
original commit: 898c92eb1e6b476a8511d4d4be2e9b962e147d5e
2010-07-09 13:52:39 -04:00
Vincent St-Amour
06afbef56f Removed a stray TODO comment.
original commit: 8505bd8bca25f9352eca5ad8d8a009bd6fe65a68
2010-07-08 18:29:16 -04:00
Vincent St-Amour
a128800e24 Pushed optimizations to auxiliary syntax classes.
original commit: dbda43ac6ba5d7e001cde75b16e39fcf3f60b5e1
2010-07-08 18:29:15 -04:00
Vincent St-Amour
8deff8c920 Refactoring of the optimizer.
original commit: c3f46cc8a6512379ead3cf99cf94fe426bec3f5a
2010-07-08 18:29:15 -04:00
Vincent St-Amour
e9ff5ae34d Moved Typed Scheme's optimizer to its own subdirectory.
original commit: 24aad77da3e3c2e411642cdb08fffaaa31a0b1cb
2010-07-08 18:29:15 -04:00
Vincent St-Amour
8ffb3128e4 Fixed pessimization of some complex code.
original commit: ea8523bd63665f5330d25c7babf3872298f1e570
2010-07-07 22:08:51 -04:00
Vincent St-Amour
9320340cb9 Improved unboxed complex operations.
Intermediate results are kept as unboxed floats as long as we stay
within complex arithmetic code.

original commit: 7853d333495376f065c63a19866ac2eba6f8926a
2010-07-07 19:42:56 -04:00
Vincent St-Amour
f7ac316db2 Avoid boxing intermediate results when doing multiple complex
operations in a row.

However, because of values and let-values, we lose float unboxing.
If we have a single complex operation, this is much slower than my
previous implementation (though still faster than generic
operations). With 2 complex operations, the new implementation becomes
faster.

original commit: 7921074eef1e36984479db5b8eea3c6bbbe13064
2010-07-07 19:42:55 -04:00
Vincent St-Amour
d55cf6d13a Avoided duplicate computation in inexact complex division.
original commit: de52d2ce9ffede21df37e74edb6cdb47bfab1828
2010-07-07 19:42:55 -04:00
Vincent St-Amour
9e3912d390 Generic inexact complex arithmetic operations are now replaced with
the right combinations of unsafe float operations.

original commit: 3fb69bc764885f2e6ef25134da747caa32b80f05
2010-07-07 19:42:54 -04:00
Vincent St-Amour
592aa2ac8c Added an optimization for vector-length of known-length vectors.
original commit: e52d63ee686e20401f0b0df80d178e40e9a0226f
2010-07-07 19:42:54 -04:00
Vincent St-Amour
f578a22046 Have type ascriptions record the ascribed type in the type table.
original commit: eb7fc7a9655f26f35220295c24086da3699c3187
2010-07-07 19:42:54 -04:00
Sam Tobin-Hochstadt
10d5e7851e Add typeof mappings only to original form.
original commit: e865380f6f7ebf843c4a4a7dea25261b28e759fc
2010-07-06 14:09:46 -04:00
Sam Tobin-Hochstadt
f6df8722f5 Improve interface for `find-mutated-vars', now supports mutable *and* immutable versions.
original commit: 692a1724746d1dfa9f666c8f6fed2090ed900099
2010-07-06 14:09:46 -04:00
Vincent St-Amour
ccbf54bdf7 Added support for make-flrectangular, flreal-part, flimag-part and
their unsafe counterparts to Typed Scheme and its optimizer.

original commit: 389a20795a5bb6db25341b899e7ec58e6eb5a0d1
2010-07-02 20:58:30 -04:00
Vincent St-Amour
a3a3bd1e2e Added coercion of fixnums to floats to the optimizer.
original commit: 556734a223f4193c1c23ded76f204f1e6bb25295
2010-07-02 20:58:29 -04:00
Vincent St-Amour
38d40649d5 Changed the optimizer's test harness to ignore type tables.
original commit: e8a0a26c2f4b3f8da6beb0b3a6b7348d6cfeccf9
2010-07-02 20:58:29 -04:00
Vincent St-Amour
fe84eaf722 Added struct optimizations.
original commit: a6d11a1df08336183e1af36b787c134e1bf4f469
2010-07-02 20:58:28 -04:00
Sam Tobin-Hochstadt
474741601b Add flags for running the optimizer tests and compiling the benchmarks
original commit: e989631d56a70b90077cbdca7993a25dc70c2011
2010-07-02 19:00:57 -04:00
Sam Tobin-Hochstadt
b415e84cd6 Fix inference for heterogenous vectors.
original commit: 0e400291e78c46cf1f4ded2c668e2b989814fc5e
2010-07-02 17:25:07 -04:00
Sam Tobin-Hochstadt
b4e86dc502 Use `define-type' to make docs clearer.
original commit: da3b4ed543ec9ca9aa3b114f4da44d12af4a60e7
2010-07-02 17:25:07 -04:00
Sam Tobin-Hochstadt
c67aef8622 Refactoring of tc-app.
- Move `check-below' into its own module
 - Move `tc/apply' to its own unit
 - Move `tc/funapp' and `tc/funapp1' to own module, outside of unit

original commit: 219682bbbef3f1593bde169796087b56e354a7fc
2010-07-02 17:25:07 -04:00
Sam Tobin-Hochstadt
6aa8cbee9d Generalize fixed-length lists to listofs.
Closes PR10057.

original commit: 570df7d6658d4ff0b88c12fb6d3af4917a1a3fa3
2010-07-02 17:25:07 -04:00
Vincent St-Amour
c6d892cd0f Fixed make-vector's type to reflect generalization on vectors.
original commit: ed4f7b7bd7bc452b6accfd32ae14402fc60532c7
2010-07-02 15:48:08 -04:00
Vincent St-Amour
49addde405 Added support for recursive types to vector-ref and vector-set!.
original commit: 40988d6d547366a520668074cc685e3f2ab22b8e
2010-07-02 15:48:07 -04:00
Vincent St-Amour
d1687b5b2b Added optimization when iterating over lists.
original commit: 458b6b65c9c281c0da2f2c63de068037d3d55703
2010-07-02 15:48:06 -04:00
Vincent St-Amour
f121650526 Added support for the 2 versions of optimizer tests to be written in
different languages.

original commit: 1886572906c40c11eb777a3eb1e273ce3877037b
2010-07-02 15:48:05 -04:00
Vincent St-Amour
228f9a971b Fixed some tests that used to test for an invalid optimization that is
now valid.

original commit: f6077b02f121c4300a761de4f5f2f1a18c361d7e
2010-07-02 15:48:04 -04:00
Vincent St-Amour
39d245984a Calls to vector now return heterogenous vectors, to preserve length
information.

original commit: f79f617ee80417059c15d9228489ec1cb716448a
2010-07-02 15:48:03 -04:00
Vincent St-Amour
e431a658e6 Fixed types for the unsafe versions of vector-length.
original commit: 843621398b1086f492f6b9130a7a93a65c2fe4f3
2010-07-02 15:48:03 -04:00
Vincent St-Amour
93d8f8839c Literal vectors are now given HeterogenousVector types to preserve
length information.

original commit: 8c25e46141da263e7f8b75813eb5b09af43e0aee
2010-07-02 15:48:00 -04:00
Vincent St-Amour
fbf7cbd494 Fixed the behavior of the optimizer on sqrt.
original commit: 351de3f767cd7b32fe75963e206c7c8da379d26b
2010-07-02 15:47:58 -04:00
Vincent St-Amour
1ebe111f88 Fixed the type of real->decimal-string.
original commit: cdfbbc5476b6c2df62aedc8813ad13bc28cb2619
2010-07-02 15:47:56 -04:00
Vincent St-Amour
98c88bf163 Generalization is now done on vector types.
original commit: 636fca1a83d453877bcab60f8e3f613d2afd97c3
2010-07-02 15:16:11 -04:00
Sam Tobin-Hochstadt
4340fd2909 Better handling of expected types for `vector'
original commit: ed88b9dd1a84908d75855e826f2b1e1d60a407a9
2010-07-01 17:32:16 -04:00
Sam Tobin-Hochstadt
2fd9e3236c Better typing for `make-sequence'.
original commit: 71bb63c128f8331dc19455bb75a8918dc5055e03
2010-07-01 17:12:59 -04:00
Sam Tobin-Hochstadt
09d59a56bf Avoid some quotes while printing types.
original commit: 9a1c08e230d2a76cb052dab1ab231974ddc652ad
2010-07-01 17:12:59 -04:00
Sam Tobin-Hochstadt
75ea7fcd25 add `displayln'
original commit: 6f7c0112d3310a3e189874974c0a623a0c330537
2010-07-01 17:12:59 -04:00
Sam Tobin-Hochstadt
4b3b0cdf41 Add --just flag for running tests.
original commit: 3d347f117b9ba648536094eb9e0bf1ab1653ea76
2010-07-01 13:47:02 -04:00
Sam Tobin-Hochstadt
b837057b1d Fix error reporting regression.
original commit: 829689eb9d93f19a7872a31c8d536be542ed8675
2010-07-01 13:46:16 -04:00
Sam Tobin-Hochstadt
2a2a54c438 Fix error spec for this test.
original commit: 4f3e3625b30adb9ec7af9d0139230d8b85150310
2010-07-01 13:45:52 -04:00
Sam Tobin-Hochstadt
63b18963f3 Better error message for multiple ->
Closes PR 10493.

original commit: 75bd26d3265d807406db3d7014e4a02ec826630c
2010-07-01 11:35:21 -04:00
Sam Tobin-Hochstadt
023c51aec2 Support syntax errors blaming multiple syntaxes.
original commit: efbdfd3e6e8e561858df08385f4da3acd37a599f
2010-07-01 11:35:20 -04:00
Vincent St-Amour
2229399d2c Updated build-list and build-vector's types for fixnums.
original commit: 1fe70704a2cbe4462f9bd1b116db9f356d06b4ea
2010-06-30 14:53:23 -04:00
Vincent St-Amour
eb326dd443 Better types for modulo and remainder involving fixnums.
original commit: adf5c8c030656026d70a627009a0655bd1546af7
2010-06-30 14:53:22 -04:00
Vincent St-Amour
6dd9ffd727 Added the Nonnegative-Float type.
original commit: 62a15df3eb2fd7dc5a8ef2455c0f20918697a668
2010-06-30 14:53:22 -04:00
Vincent St-Amour
e25b242c6a Added filters for numeric comparisons.
original commit: f026da5ecf4cd144dfc82ec5660c95542c49bb07
2010-06-30 14:53:22 -04:00
Vincent St-Amour
9b7ee99d39 Extended type signatures for addition.
original commit: e8c42cd20cc00e607e44bb6f172333d49b8a707d
2010-06-30 14:53:21 -04:00
Vincent St-Amour
f89158a144 Updated make-vector's type for fixnums.
original commit: 06b636b2e31e32fed83d1a58293e1b8f36f8381a
2010-06-30 14:53:21 -04:00
Vincent St-Amour
b7d9ed75e2 Added the Inexact-Complex type.
original commit: dcfb2d8a94b1359217b9451b7a97d4afa425a6da
2010-06-30 14:53:21 -04:00
Vincent St-Amour
c6a22a53f4 Fixed the type of min and max to only operate on reals.
original commit: ef576e27c5187783648209c55d4ca211ff693e05
2010-06-30 14:53:20 -04:00
Vincent St-Amour
848b6f0e02 Kept track of source location better in the for: macros and got rid of
useless type ascriptions.

original commit: 22a652ef8effe8cf670cd69221cb3dd4689b6a21
2010-06-30 14:53:20 -04:00
Vincent St-Amour
431d91bf89 Fixed the type for hash-ref!
original commit: 90252c9bd33e7205a5494dd13fc823d6df78b477
2010-06-30 14:53:20 -04:00
Vincent St-Amour
98738ea50a Added a rule for valid float promotion when dividing.
original commit: 8ec6d7ff3f835f88be73c07dddcf9e2dd6388e79
2010-06-30 14:53:19 -04:00
Vincent St-Amour
fc1a0a9e05 Added special case to the typechecker for (- <positive-fixnum> 1).
original commit: c6373ca7c09ec74e50e8b435b9a0387310c1b202
2010-06-30 14:53:19 -04:00
Vincent St-Amour
be0e26235a Fixed build-vector's type.
original commit: f27aac552fde4580850493dbde9fbb3d4a989e5a
2010-06-30 14:53:19 -04:00
Vincent St-Amour
783b505c9d Eliminate exact->inexact of floats.
original commit: a6872c67a74e5d65a8a68b7fd5daa16b4225efe9
2010-06-30 14:53:18 -04:00
Vincent St-Amour
d89e82755f Added fixnum optimizations.
original commit: dfafc0b2958debe3953aa6c525a737f8c63859c8
2010-06-30 14:53:18 -04:00
Vincent St-Amour
18155bf2c5 Added fixnums to more type signatures.
original commit: cee39c4a38bb0ca41f79a4b8e9e159501e5d627d
2010-06-30 14:53:18 -04:00
Sam Tobin-Hochstadt
4a5379ca01 Forgot to disable this yet again.
original commit: f7634043479125de58308197c3fb5fea75146db5
2010-06-30 12:04:23 -04:00
Sam Tobin-Hochstadt
19bb208f4f make subst structs transparent
original commit: 18078400b77114880e99e1c39913f8df96a0faa2
2010-06-29 17:34:44 -04:00
Sam Tobin-Hochstadt
887f054a55 Refactor struct type representation.
- fields now represented by fld struct.
 - mutability on per-field basis
 - accessors are per field

This fixes lots of existing bugs, allows future #:mutable on fields.

original commit: c01b2397796cce0ade2ed7515ffe33c9eb338c4f
2010-06-29 17:33:36 -04:00
Sam Tobin-Hochstadt
7186e085fa minor cleanups
original commit: 3c4f1f39b8acf610576f4069c37929f071c60ec3
2010-06-29 17:33:35 -04:00
Sam Tobin-Hochstadt
7341d85d62 Remove bogus reference to 'sexpression', add docs for Sexp type, don't use Sexp where inappropriate
original commit: 26e73cf61d80636246dd0bf5912b7670c30698d6
2010-06-28 11:12:21 -04:00
Sam Tobin-Hochstadt
efa50529d0 remove unneeded export
original commit: a214f50812546e045ff9ca3c6273a06f89c4bdf9
2010-06-28 11:12:20 -04:00
Sam Tobin-Hochstadt
5883e7e818 Use get-type/infer for un-annotated defines.
original commit: 0bae63b516a3081276aefd1e2d46b28eba4f31be
2010-06-28 11:12:20 -04:00
Sam Tobin-Hochstadt
e3f8fff0e8 Generalize mutated variables when inferring types.
original commit: 90d8a3cc13dd76ba8d1eaefa98ee5e3248e43b04
2010-06-28 11:12:20 -04:00
Vincent St-Amour
db81a50276 Fixed Typed Scheme's optimizer's test harness to work with drdr.
original commit: 28acece484b050cd42f57c3826e47d92bde31aee
2010-06-25 13:25:42 -04:00
Vincent St-Amour
e96760613b Fixed the optimizer so that it optimizes float comparisons.
original commit: 382a45ad6fe99f758451631b07fac393333893a8
2010-06-25 11:00:26 -04:00
Vincent St-Amour
fe3ce60a26 Typed Scheme now optimizes (exact->inexact <Integer>) to (->fl <Integer>).
original commit: d6008f9191c5e00e335d2f683fecbc9d09c34475
2010-06-25 11:00:25 -04:00
Vincent St-Amour
773d817389 Typed Scheme now optimizes (fl)vector-length for all vectors and
vector-(ref,set!) for vectors of known length.

original commit: b345d5f0f0d2b8bbf02a5a97b335e288ef172e58
2010-06-25 11:00:24 -04:00
Vincent St-Amour
92347a18b6 Wrote a test harness and a couple of tests for Typed Scheme's optimizer.
original commit: fd987546b3d0293edba097f940c33fbdbf6c3b86
2010-06-25 11:00:23 -04:00
Vincent St-Amour
b8378a32a7 Added better tracing to the optimizer.
original commit: d47221c55dba99ecbce45affa92011203b02bb9e
2010-06-25 11:00:23 -04:00
Sam Tobin-Hochstadt
680e7fee29 More fixnum improvements.
original commit: 3251712ef79832415b371a7ff2c6593da0372411
2010-06-24 18:17:01 -04:00
Sam Tobin-Hochstadt
a7b787db6c Add Fixnum type.
original commit: 4b1c62c9785a6578ba2f894a53a8ee6f1a03152f
2010-06-24 18:05:55 -04:00
Sam Tobin-Hochstadt
c898d882c6 recreate selector table automatically.
original commit: a33f460b2547866d492bf01c81ded9b2a669ea26
2010-06-24 16:48:10 -04:00
Sam Tobin-Hochstadt
bc193f512c Types are not quotable.
original commit: 40ca16bc3059a029adddd5da1006680db578fa4c
2010-06-24 16:47:25 -04:00
Sam Tobin-Hochstadt
8e76e34368 More options for test runner.
original commit: 5b1118d514ca8cc7f0071bfa531f8268401fc531
2010-06-24 16:46:31 -04:00
Sam Tobin-Hochstadt
7f6da53efa Use the correct field numbers in substructs.
Maintain table of struct accessors/mutators.

original commit: 3c8952d63d2cd28a3b5a588c0367b53dc963308b
2010-06-24 14:53:38 -04:00
Sam Tobin-Hochstadt
68ba63ce4d Better handling of unsafe identifier generation.
original commit: 3078807757448b9223bcd58cfa10d7b30db4ddee
2010-06-24 11:05:55 -04:00
Vincent St-Amour
93728d1ebd Switched indexing to integers in the typechecker's special cases for
heterogenous vectors and unsafe struct operations.

original commit: 3c9e7e34db69a6112f8aa87c4e5c3edcd550b4ab
2010-06-22 18:42:26 -04:00
Vincent St-Amour
1d48090ecb Added support for unsafe struct operations to Typed Scheme.
original commit: 7d1040283ed325c93fb5499649a0aba5cfadfab7
2010-06-22 18:42:25 -04:00
Vincent St-Amour
9cbdbd8ed7 Added support for unsafe operations on heterogenous vectors.
original commit: 379d9a21251696293a997aa1c58611b85b41b6ce
2010-06-22 18:29:57 -04:00
Vincent St-Amour
8dc90d067b Moved the types for some byte string operations to
base-env-indexing-abs.rkt.

original commit: eea31102b015d77ee989dfb0951729b3f1bfa313
2010-06-22 18:29:57 -04:00
Vincent St-Amour
1cf790fc86 Fixed the types of flvector operations.
original commit: 192c1fa995f44163d42e46f2466bdd05e74a98a8
2010-06-22 18:29:56 -04:00
Vincent St-Amour
0f27106fdd Made make-vector's type more convenient.
original commit: 61545c4e75795adbdd951ed94fb6274a1a7b9709
2010-06-22 18:29:56 -04:00
Sam Tobin-Hochstadt
8869cd4d22 Add `struct:'
original commit: 6e1954d79b520fefd21abe81d06fe615e056ac93
2010-06-22 16:29:35 -04:00
Sam Tobin-Hochstadt
b718e60469 Typecheck `map' expression, not just #'map.
original commit: bce2cedf3864166c137ef91ca3f79f45fb6745da
2010-06-22 10:12:54 -04:00
Sam Tobin-Hochstadt
0bf7faa4fa Initialize `infer' for tests
original commit: 95c5f942e6854e1d066b7627b2f65097e14e24b9
2010-06-22 10:11:14 -04:00
Sam Tobin-Hochstadt
eb621217bc Docs for List x ...
original commit: 4df7d09ef1933fc128737ad3d29b61428d80b70b
2010-06-21 18:30:30 -04:00
Sam Tobin-Hochstadt
f50aa4917a support `map' over multiple ListDots with the same bound
- also support ListDots + Listof (map errors when not same length)

original commit: 0c7c722e16cd9f6e3e88deaa45cb681337021078
2010-06-21 18:30:30 -04:00
Sam Tobin-Hochstadt
84247a1882 allow optional specifcation of var pattern
original commit: b8777d20b26837d8ecfa78eeeda25fdccdb4a783
2010-06-21 18:30:29 -04:00
Stevie Strickland
e73d9f5ee8 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

original commit: 034b22d01401bba31f700dd5cb38fcf731ed64be
2010-06-21 18:30:29 -04:00
Stevie Strickland
a49d4de0ba Take dcon-dotteds and create an appropriate i-subst/dotted entry.
original commit: 9c22701bd3a0178470e736b51c1c6c863ebd08d6
2010-06-21 18:30:29 -04:00
Stevie Strickland
c925e90dc6 Add fixed part to dcon-dotted.
original commit: 3f7ca52e370dfa0b81b5c9955c785bd429cda3d8
2010-06-21 18:30:29 -04:00
Sam Tobin-Hochstadt
380885f978 Implement substitutions as hash tables from vars to subst-rhs.
- add convenience function for generating substitutions
 - give trivial substitution for unreferenced index variables

original commit: 339add9f78723fecb3e7332a8a173f615c37bc2c
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
6514ee71e1 Refactor substitution.
- new file types/substitute
 - use structs for substitutions

original commit: 44d46e4cd7ecc06a264282b31dd7ba47dee421f1
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
da323feea3 This test case now passes.
original commit: dcc8beb5cd00f6fc12c450be56b4ba83823e3898
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
5618abb4f4 provide more information in inference failures
original commit: 8990459be69c3e720871bff23827826709990c49
2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
9f8b2e4e2b fix fail! to use the correct arguments
original commit: 692dc025c0db0aa64ee358ae5a36cbd6165455a3
2010-06-21 18:30:27 -04:00
Sam Tobin-Hochstadt
16617152c5 Fix move-to-dmap functions
original commit: 9f99c914f3ce2c00119b64caa0be1a286df398c1
2010-06-21 18:30:27 -04:00
Stevie Strickland
f1ef77e550 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.)

original commit: b5d4d54d450b7c2e87ab1d80db66e84cbd1bd2e5
2010-06-21 18:30:26 -04:00
Stevie Strickland
b956e47ed2 Export the types provide macro.
original commit: 078b57c77da5051470cf88e932c69f9f95ed60b6
2010-06-21 18:30:26 -04:00
Stevie Strickland
5a4d6ed4a0 Fix up subst-gen to treat vars and idxs separately.
original commit: ec09139e0a22007fd3f6bd7ac69336053d65bb48
2010-06-21 18:30:26 -04:00
Sam Tobin-Hochstadt
7e4ee76e4e Various small assorted fixes.
original commit: d886331807f55e5a2a4ebb464b50d50835e20393
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
c2b7caa66d The inference engine doesn't need this annotation anymore.
original commit: e235c837b0d20538ca4c0fc024c18ddb30ac2ae4
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
c10334cfb0 More progress on refactoring infer
original commit: 82e7d281cb028e9d2e5c57a9a8c01b4d4e18275a
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
fdfdd6e3b2 Fix a bunch of uses of `infer' et al.
original commit: 18f45c413882b9e145fffa84d41bfb5b378396fc
2010-06-21 18:30:25 -04:00