Commit Graph

1014 Commits

Author SHA1 Message Date
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
Robby Findler
41cfcbe862 rewrote an ->d contract so that it would work with a let*-style scoping 2010-07-10 10:01:25 -05:00
Sam Tobin-Hochstadt
e28b60e44f remove debugging printf 2010-07-09 14:06:46 -04:00
Sam Tobin-Hochstadt
d030d0631d Fix missing unquote 2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
a84796d8d7 add variance helper functions 2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
c6fb95d44d add `make-constant' 2010-07-09 13:52:39 -04:00
Sam Tobin-Hochstadt
898c92eb1e generalize inferred types for invariant positions 2010-07-09 13:52:39 -04:00
Vincent St-Amour
8505bd8bca Removed a stray TODO comment. 2010-07-08 18:29:16 -04:00
Vincent St-Amour
dbda43ac6b Pushed optimizations to auxiliary syntax classes. 2010-07-08 18:29:15 -04:00
Vincent St-Amour
c3f46cc8a6 Refactoring of the optimizer. 2010-07-08 18:29:15 -04:00
Vincent St-Amour
24aad77da3 Moved Typed Scheme's optimizer to its own subdirectory. 2010-07-08 18:29:15 -04:00
Vincent St-Amour
ea8523bd63 Fixed pessimization of some complex code. 2010-07-07 22:08:51 -04:00
Vincent St-Amour
7853d33349 Improved unboxed complex operations.
Intermediate results are kept as unboxed floats as long as we stay
within complex arithmetic code.
2010-07-07 19:42:56 -04:00
Vincent St-Amour
7921074eef 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.
2010-07-07 19:42:55 -04:00
Vincent St-Amour
de52d2ce9f Avoided duplicate computation in inexact complex division. 2010-07-07 19:42:55 -04:00
Vincent St-Amour
3fb69bc764 Generic inexact complex arithmetic operations are now replaced with
the right combinations of unsafe float operations.
2010-07-07 19:42:54 -04:00
Vincent St-Amour
e52d63ee68 Added an optimization for vector-length of known-length vectors. 2010-07-07 19:42:54 -04:00
Vincent St-Amour
eb7fc7a965 Have type ascriptions record the ascribed type in the type table. 2010-07-07 19:42:54 -04:00
Sam Tobin-Hochstadt
e865380f6f Add typeof mappings only to original form. 2010-07-06 14:09:46 -04:00
Vincent St-Amour
389a20795a Added support for make-flrectangular, flreal-part, flimag-part and
their unsafe counterparts to Typed Scheme and its optimizer.
2010-07-02 20:58:30 -04:00
Vincent St-Amour
556734a223 Added coercion of fixnums to floats to the optimizer. 2010-07-02 20:58:29 -04:00