Commit Graph

43 Commits

Author SHA1 Message Date
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
78a27d2bf9 Fixed over-generous pattern matching.
original commit: 435407b37a519c2e0c4401f9a07f93de99e134cb
2010-07-29 18:29:58 -04:00
Vincent St-Amour
851401b25b Fixed a bug that caused the let optimizations to choke on TR-introduced code.
original commit: b58461da2dc2fd495e555e24ffd1abddca3a25b3
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
a2e41f4588 Fixed a bug in the complex use-site analysis.
original commit: 855928eb7b446d7c7eb741afe8f3a6e632f95141
2010-07-29 18:29:57 -04:00
Vincent St-Amour
425ec70787 Refactoring of the call-site correction code.
original commit: 4633a2a30aef91dd7d10445d1a445c75be08fe1b
2010-07-29 18:29:55 -04:00
Vincent St-Amour
1b054179b6 Changed optimization order, to avoid potential conflicts.
original commit: 29b9eb389d8e5ee68c922e18d67e75fe6eaa607d
2010-07-29 18:29:55 -04:00
Vincent St-Amour
c631cec4d8 Fix for escaping functions.
original commit: eed20f7c3a8a459dedc8798777ff3df71f2cfb2b
2010-07-29 18:29:55 -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
da5586ca57 Fixed a bug with functions with unboxed complex and non-complex args.
original commit: defe96a148227eceaee94c886ac565cf8f253951
2010-07-29 18:29:53 -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
7bc583e27b Added an option to see the result of the optimizer before compiling.
original commit: 1d758ee78221a87e477e62ab9cca03c816adf49a
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
6473855e45 Fix to tolerate complexes of unknown exactness inside inexact-complex
expressions.

original commit: 1b998f25e5626ff18bf18c911c4b161a66574b72
2010-07-25 20:13:36 -04:00
Vincent St-Amour
ea0d96e9dd The optimizer now ignores code that is inside a with-handlers form,
since it would be typechecked in an unusual manner.

original commit: 80b6ef7dd19e7d094578ae176442ee3fa8047b96
2010-07-23 18:52:47 -04:00
Vincent St-Amour
56fde8109f Fixed unboxing of let bindings.
original commit: 5892ef2fad2c92346cd2871e25846696f3312185
2010-07-23 18:52:46 -04:00
Vincent St-Amour
5c75aa1793 Fixed typo.
original commit: 12ce9abda6916bd590ac76666a6f3db4a63dd2f3
2010-07-23 18:52:45 -04:00
Vincent St-Amour
a479e9d5e3 The optimizer now ignores expressions ignored by the typechecker.
original commit: 82b064a520405575ea69e453dfd768ac2df2b17c
2010-07-23 18:52:44 -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
Vincent St-Amour
fe68e29caa Optimized extracting parts of inexact complexes.
original commit: 063b87697a333b2b8f53e6d2b8a43e8f500e2762
2010-07-23 18:52:42 -04:00
Vincent St-Amour
2ef2641a4d Refactoring of the optimizer.
original commit: 0493e6f7623361a289989654d25deac19e552de6
2010-07-23 18:52:41 -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
9fea49db55 Added optimization for zero?.
original commit: 47195410cbbe7d19ac6e33175fd57bfce6e6c4b3
2010-07-21 21:09:40 -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
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
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