Commit Graph

400 Commits

Author SHA1 Message Date
Vincent St-Amour
019ea62c25 Added a test for unboxed nested loops.
original commit: 4d43c2156562540bcd70cf91a4c712b1546f9f2e
2010-08-05 17:21:54 -04:00
Vincent St-Amour
79f4bcfbdb Generalize naturals to integers to minimize annotations on mutated variables.
original commit: b18f2353cab9712c827dda692649bcd16bc3e79e
2010-08-05 09:04:25 -04:00
Vincent St-Amour
82340857d9 Optimize coercion of integer literals.
original commit: bdf84f371d4ccf952e08251703a4249c37f81a85
2010-08-05 09:04:23 -04:00
Vincent St-Amour
4c41407d64 Added optimization for make-polar
original commit: fb31a6556e04d9aa6aa31c215394a80b9d146bd7
2010-08-05 09:04:22 -04:00
Vincent St-Amour
267e4c1e78 Fixed typechecking of imaginaries.
original commit: dbdbaed50600b7ce47e2dacc12ba1e6f2a0345b4
2010-08-05 09:04:21 -04:00
Vincent St-Amour
492c89be8d Eliminate user-introduced boxing.
original commit: b47a77dd57a4ed92f49cd92253c6c06905923f9f
2010-08-02 21:33:30 -04:00
Sam Tobin-Hochstadt
1f05ee70e2 Don't treat Error types as potentially non-regular. (Reported by SK)
original commit: 431ff8d794425e12577c662be7827a38531ad39f
2010-08-02 15:41:42 -04:00
Vincent St-Amour
fbb55c63c4 Extended use-site analysis to look through trivial rebindings, to support for loops.
original commit: 27f8279711ae93601c00d27c8041a017afdf592c
2010-07-29 18:29:59 -04:00
Vincent St-Amour
a016db4697 Make sure that let-bound functions don't escape through a rhs before we change their interface.
original commit: 260de85a6efbc692abaec64d6837a4dfa965cb78
2010-07-29 18:29:58 -04:00
Vincent St-Amour
0edccc7db9 Extended unboxing of let-bound functions to support let loops.
original commit: f08456cf0708483f267fba86e10f52c318d0dedd
2010-07-29 18:29:57 -04:00
Vincent St-Amour
0f5db893f5 Be more aggressive when unboxing let bindings.
original commit: 3e9e5560bf216a0d555b38ee2cb6cf8a4c5ef908
2010-07-29 18:29:54 -04:00
Vincent St-Amour
7c875c3bb2 More tests for unboxed args of let-bound functions.
original commit: bb144249183f8e287a37a1590df5a5aa219862f8
2010-07-29 18:29:54 -04:00
Vincent St-Amour
f86dd7f384 Added unboxed arguments to let-bound functions.
original commit: 9d471df8b96be389202d39d5346f37eefb6d6607
2010-07-29 18:29:53 -04:00
Vincent St-Amour
28378f77d5 Added unboxed letrec-syntaxes+values bindings.
original commit: b0d299d1b86e2bf07c7715e87ebb303f03bde853
2010-07-29 18:29:52 -04:00
Vincent St-Amour
277df87ff6 Added unboxed letrec bindings.
original commit: 8dc23d43eb23eac7a887ae2f3ef3633c54d3ba87
2010-07-29 18:29:52 -04:00
Vincent St-Amour
c625d547ca Fixed a bug with exact complexes.
original commit: 4803eafa6722acfdf0d37dab3782660d22665b84
2010-07-25 22:15:18 -04:00
Vincent St-Amour
34d7dda844 Added a test for cross-module struct optimization.
(cherry picked from commit 4e6fc3154bd286d3edcd36a25bfc672cc6a0659d)

original commit: 8f47f0019fae4faf0ea8bb09d7fbd3b3e06254df
2010-07-25 04:16:08 -04:00
Vincent St-Amour
a248746a2d Added one more test for unboxed let bindings.
original commit: ec39ea5f3352068497a97c959e72814fab7089d0
2010-07-24 17:01:23 -04:00
Vincent St-Amour
27fe7f732f Fixed a test that could not work because of shadowing in hand-optimized code.
original commit: 5d86813267521e3191b91e884418ac39bdb3a8e2
2010-07-23 18:52:46 -04:00
Vincent St-Amour
e9d9c2aca9 Added a test to the optimizer.
original commit: ea580e6ff88cb3be758690b99a1968179cbc3c26
2010-07-23 18:52:43 -04:00
Vincent St-Amour
eb60ac080a let bindings of inexact-complex numbers can be replaced by bindings
for each of their components.

This allows unboxing of intermediate results that are bound and only
ever used in positions where they would be unboxed.

original commit: 83987fffac7719ab0c35d3df49ea0a7adf4bc9b6
2010-07-23 18:52:42 -04:00
Sam Tobin-Hochstadt
69476bba24 Optimize (apply + (map f l)) to avoid the intermediate list.
original commit: 5bb730f72c91f52166009d1e5fbe52a346c91edf
2010-07-23 14:11:40 -04:00
Vincent St-Amour
9bef097987 Optimizations on one-argument cases of arithmetic operations.
original commit: 0ee0886cab6989843a9bef1eb3797657e0f1d0c2
2010-07-21 21:09:43 -04:00
Vincent St-Amour
6c0c6b3f65 Added optimization for string-length and bytes-length.
original commit: 4e944f73abc138b7d283020bf5c577fe6ecf6e95
2010-07-21 21:09:42 -04:00
Vincent St-Amour
19f4d78569 Added box optimizations.
original commit: d6ce6e664f0bd361207725fb3ea9b2a265f39374
2010-07-21 21:09:42 -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
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
Vincent St-Amour
1657089284 Added mutable pair optimizations.
original commit: fc29e7e8562e4b00c6e7de5882d8ccf374051ca1
2010-07-16 12:22:16 -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
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
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
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
c05f2797aa Added a test for cross-module struct optimization.
original commit: 4e6fc3154bd286d3edcd36a25bfc672cc6a0659d
2010-07-16 12:22:10 -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
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
6aa8cbee9d Generalize fixed-length lists to listofs.
Closes PR10057.

original commit: 570df7d6658d4ff0b88c12fb6d3af4917a1a3fa3
2010-07-02 17:25:07 -04:00