Vincent St-Amour
29b9eb389d
Changed optimization order, to avoid potential conflicts.
2010-07-29 18:29:55 -04:00
Vincent St-Amour
eed20f7c3a
Fix for escaping functions.
2010-07-29 18:29:55 -04:00
Vincent St-Amour
3e9e5560bf
Be more aggressive when unboxing let bindings.
2010-07-29 18:29:54 -04:00
Vincent St-Amour
defe96a148
Fixed a bug with functions with unboxed complex and non-complex args.
2010-07-29 18:29:53 -04:00
Vincent St-Amour
9d471df8b9
Added unboxed arguments to let-bound functions.
2010-07-29 18:29:53 -04:00
Vincent St-Amour
1d758ee782
Added an option to see the result of the optimizer before compiling.
2010-07-29 18:29:53 -04:00
Vincent St-Amour
27f0e50d53
Register type of loop lambdas generated by the for macros.
2010-07-29 18:29:52 -04:00
Vincent St-Amour
b0d299d1b8
Added unboxed letrec-syntaxes+values bindings.
2010-07-29 18:29:52 -04:00
Vincent St-Amour
8dc23d43eb
Added unboxed letrec bindings.
2010-07-29 18:29:52 -04:00
Vincent St-Amour
4803eafa67
Fixed a bug with exact complexes.
2010-07-25 22:15:18 -04:00
Vincent St-Amour
1b998f25e5
Fix to tolerate complexes of unknown exactness inside inexact-complex
...
expressions.
2010-07-25 20:13:36 -04:00
Vincent St-Amour
80b6ef7dd1
The optimizer now ignores code that is inside a with-handlers form,
...
since it would be typechecked in an unusual manner.
2010-07-23 18:52:47 -04:00
Vincent St-Amour
5892ef2fad
Fixed unboxing of let bindings.
2010-07-23 18:52:46 -04:00
Vincent St-Amour
12ce9abda6
Fixed typo.
2010-07-23 18:52:45 -04:00
Vincent St-Amour
82b064a520
The optimizer now ignores expressions ignored by the typechecker.
2010-07-23 18:52:44 -04:00
Vincent St-Amour
83987fffac
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.
2010-07-23 18:52:42 -04:00
Vincent St-Amour
063b87697a
Optimized extracting parts of inexact complexes.
2010-07-23 18:52:42 -04:00
Vincent St-Amour
0493e6f762
Refactoring of the optimizer.
2010-07-23 18:52:41 -04:00
Sam Tobin-Hochstadt
5bb730f72c
Optimize (apply + (map f l)) to avoid the intermediate list.
2010-07-23 14:11:40 -04:00
Vincent St-Amour
0ee0886cab
Optimizations on one-argument cases of arithmetic operations.
2010-07-21 21:09:43 -04:00
Vincent St-Amour
4e944f73ab
Added optimization for string-length and bytes-length.
2010-07-21 21:09:42 -04:00
Vincent St-Amour
d6ce6e664f
Added box optimizations.
2010-07-21 21:09:42 -04:00
Vincent St-Amour
234e8c363c
Improved closure properties of bitwise-and.
2010-07-21 21:09:41 -04:00
Vincent St-Amour
c4ae44123f
Bytes are fixnums.
2010-07-21 21:09:41 -04:00
Vincent St-Amour
d078305a59
Improved behavior of coercions with n-ary arithmeric operations.
2010-07-21 21:09:41 -04:00
Vincent St-Amour
a31d7b60c8
Added type signatures for operations on inexact complexes and floats.
2010-07-21 21:09:40 -04:00
Vincent St-Amour
47195410cb
Added optimization for zero?.
2010-07-21 21:09:40 -04:00
Vincent St-Amour
60bfce14bc
Fixed unsafe optimization that considered floats as complexes.
2010-07-16 19:08:20 -04:00
Vincent St-Amour
4d5b50dee9
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.
2010-07-16 19:08:19 -04:00
Stevie Strickland
654b7df1de
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.
2010-07-16 19:08:19 -04:00
Vincent St-Amour
8d6230956d
Documented the optimizer.
2010-07-16 19:08:18 -04:00
Vincent St-Amour
fc29e7e856
Added mutable pair optimizations.
2010-07-16 12:22:16 -04:00
Vincent St-Amour
f21454e711
Fixed an infinite loop.
2010-07-16 12:22:16 -04:00
Vincent St-Amour
c587038b33
The imaginary parts of reals are ignored when doing complex division.
2010-07-16 12:22:15 -04:00
Vincent St-Amour
443d8b9f91
Fixnums and integers can now be coerced for complex operations.
2010-07-16 12:22:15 -04:00
Vincent St-Amour
c645aa7ebc
The imaginary parts of inexact reals are ignored when doing complex multiplication.
2010-07-16 12:22:15 -04:00
Vincent St-Amour
748e9e47ad
The imaginary parts of inexact reals are ignored when doing complex
...
addition or subtraction.
2010-07-16 12:22:13 -04:00
Vincent St-Amour
025af5b815
Added coercions for floats with unboxed complex operations.
...
However, this generates superfluous operations involving their
imaginary part of 0.
2010-07-16 12:22:13 -04:00
Vincent St-Amour
fff71e6a1d
Enabled optimization of complex conjugate at the top level of complex operations.
2010-07-16 12:22:12 -04:00
Vincent St-Amour
063211d922
Added unboxed complex conjugate.
2010-07-16 12:22:12 -04:00
Vincent St-Amour
0b0da84eba
Added optimizations for iterating over vectors and strings.
2010-07-16 12:22:12 -04:00
Vincent St-Amour
1e550139aa
Added dead code elimination.
2010-07-16 12:22:11 -04:00
Vincent St-Amour
58fe07ad70
Better internal error reporting.
2010-07-16 12:22:11 -04:00
Vincent St-Amour
b7229487a5
Various fixnum unsafe operations improvements.
2010-07-16 12:22:11 -04:00
Vincent St-Amour
4a8113eac6
Added types for sequence functions.
2010-07-16 12:22:10 -04:00
Vincent St-Amour
85b96a98b3
Fixed the type for fxrshift.
2010-07-16 12:22:10 -04:00
Vincent St-Amour
8c840a2282
Added types for byte-string I/O functions.
2010-07-16 12:22:09 -04:00
Vincent St-Amour
3dbbd6d3fc
Added types for integer/bytes functions.
2010-07-16 12:22:09 -04:00
Vincent St-Amour
abee5a4db7
Added type for collect-garbage.
2010-07-16 12:22:09 -04:00
Ryan Culpepper
07f57aac9b
Added uses of unstable/struct
2010-07-13 12:07:47 -06:00