Abdulaziz Ghuloum
78d9fa1f42
In 64-bit, ikarus now passes all tests, can recompile itself,
...
and runs all benchmarks (inefficiently but correctly).
2008-07-20 00:14:09 -07:00
Abdulaziz Ghuloum
eccca7f4ea
- Added trace-let-syntax, trace-letrec-syntax, as well as fixed
...
trace-define-syntax to handle variable transformers.
- added primops for fx comparison functions.
2008-07-11 22:31:40 -07:00
Abdulaziz Ghuloum
579b823f44
WIP on tag analysis, annotations, and utilization.
2008-07-06 23:48:16 -07:00
Abdulaziz Ghuloum
d73dfd1287
- More work on the new optimizer
...
- Deleted old optimizer and changed the meaning of optimize level to
be:
0: bypass the optimizer
1: copy propagation, constant folding, no inlining
1: copy propagation, constant folding, with inlining
The default is set to 1.
2008-06-29 12:35:34 -07:00
Abdulaziz Ghuloum
45346ef865
- Added cp0! including:
...
- (optimize-level [0,1,2]) and ikarus -O[0,1,2]
where -O0 = no optimizations
-O1 = using old optimizer
-O2 = using the new cp0 optimizer
defaults to -O1 for now.
- (cp0-size-limit n) which is the limit of the residual size for
each inlining attempt
- (cp0-effort-limit n) which is the limit on the effort expended
for each inlining attempt
- Rewrote the syntax-match macro to make use of the same technology
used in syntax-case itself resulting in reduced code size.
- Added (system-value <symbol>) which returns the system value.
E.g., (system-value 'car) => #<procedure car>
This is pretty much the same as
(eval <symbol> (environment '(ikarus)))
except that it does not involve compiling the expression or
consulting the library/expander systems.
- Fixed the fasl loader to make it understand complex numbers.
2008-06-28 02:25:44 -07:00
Abdulaziz Ghuloum
7d9ed176ac
More work on cp0 which can now swallow the compiler but cannot yet
...
fold any primitives.
2008-06-22 22:10:05 -07:00
Abdulaziz Ghuloum
e65b39d95d
All parameters that are bound to variables now have proper names.
...
E.g., pretty-width now prints as #<procedure pretty-width>.
2008-06-19 01:58:59 -07:00
Abdulaziz Ghuloum
4bb7e170b5
Some procedures (like console-output-port) did not get names when
...
printed (instead, they were just #<procedure>). Names for
procedures that are defined like
(define foo
(let ([something ---])
(lamdba () ---)))
now works.
2008-06-18 22:47:56 -07:00
Abdulaziz Ghuloum
ab2e05e8b0
Added inexact complex numbers.
2008-05-24 10:13:01 -07:00
Abdulaziz Ghuloum
82140f87ba
- Added complex numbers representation (exact complex only).
...
- Added make-rectangular.
- Added the ability to display complex numbers.
2008-05-18 20:39:41 -07:00
Abdulaziz Ghuloum
0cd61369b2
added some preliminary work for known-types.
2008-05-16 23:27:08 -07:00
Abdulaziz Ghuloum
d8cd4f0acf
Added engine-handler parameter and a ($swap-engine-counter! <neg-fx>)
...
to (ikarus system $interrupts).
2008-04-29 00:10:49 -04:00
Abdulaziz Ghuloum
f63f85e1cc
570 tests in 64-bit mode
2008-04-09 03:05:19 -04:00
Abdulaziz Ghuloum
0f55361b19
Fixes bug 205427 in letrec*.
2008-03-23 04:14:53 -04:00
Abdulaziz Ghuloum
163809f667
Ikarus can now compile, save, and reload a simple hello-world library.
2008-02-18 02:02:00 -05:00
Abdulaziz Ghuloum
e02b646d6e
Added separate compilation stubs.
2008-02-17 04:08:38 -05:00
Abdulaziz Ghuloum
5c56450c3e
removed some stale junk from compiler.ss
2008-02-17 03:11:12 -05:00
Abdulaziz Ghuloum
1d6d5bec61
Some work on optimizer (still not working).
2008-02-17 02:11:04 -05:00
Abdulaziz Ghuloum
30aae80c5d
removed all symbolicly linked files.
2008-02-14 17:45:15 -05:00
Abdulaziz Ghuloum
66b9f6968e
Work in progress on reimplementing the optimizer based on
...
Oscar Waddell's dissertation (chapter 4). The existing
optimizer in Ikarus is just a joke.
2008-02-13 03:29:34 -05:00
Abdulaziz Ghuloum
3811d0a4c2
Loops with a single free variable no longer allocate a closure.
2008-02-11 22:18:32 -05:00
Abdulaziz Ghuloum
e1d9e72983
some compiler cleanup
2008-02-11 09:29:59 -05:00
Abdulaziz Ghuloum
4a731c4f28
Fixed a bug introduced earlier today that prevented bindings to
...
simple constants from being initialized properly.
2008-02-10 07:35:09 -05:00
Abdulaziz Ghuloum
5b904b93c4
SCC-letrec optimization is now online.
2008-02-10 05:46:58 -05:00
Abdulaziz Ghuloum
6df608ccd9
SCC-letrec kinda works now.
2008-02-10 05:24:16 -05:00
Abdulaziz Ghuloum
4e5121af4e
Implemented an experimental SCC letrec transformation which does not
...
work yet.
2008-02-10 03:27:31 -05:00
Abdulaziz Ghuloum
f6e5e4d5b4
Added -m32 to CFLAGS/LDFLAGS, updated copyright dates and version no.
2008-01-29 00:34:34 -05:00
Abdulaziz Ghuloum
7a2ac14f5a
Eliminated frame-pointer adjustment around calls if the adjustment
...
is 0. Previously, you'd get
addl 0, fpr
<stuff>
subl 0, fpr
which are useless.
2008-01-10 03:26:18 -05:00
Abdulaziz Ghuloum
3cd68e7ea3
Fixed bug 179978: (eq? (vector) (vector)) should evaluate to #t
2008-01-04 21:19:30 -05:00
Abdulaziz Ghuloum
3b8eb4bbd4
Ikarus can compile immediates in 64-bit mode.
...
It feels like I'm going through my compilers tutorial all over again!
2008-01-03 04:42:10 -05:00
Abdulaziz Ghuloum
341e53a36d
64-bit fasl files can now be produced and read.
2008-01-03 02:07:17 -05:00
Abdulaziz Ghuloum
3c99e7d393
fasl-write now writes different fasl objects depending on the
...
architecture bitness.
2008-01-02 23:22:55 -05:00
Abdulaziz Ghuloum
c15876aebe
Abstracted the construction of call frames and automated the padding
...
process. The compiler no longer has hardcoded null bytes inserted
into the code streams.
2008-01-02 07:01:45 -05:00
Abdulaziz Ghuloum
0db7d1d6d0
Identified places where a hard-coded number of null bytes are
...
manually inserted into the code stream to ensure proper offsets.
These need to be removed ASAP. Also, abstracted the values of three
constants that were hardcoded.
2008-01-02 05:55:30 -05:00
Abdulaziz Ghuloum
50e2478d06
removed some hard-coded constants of pcb-offsets.
2008-01-01 23:07:41 -05:00
Abdulaziz Ghuloum
2a96ebf5b1
Fixes bug 178858: convert-closures "free vars encountered in
...
program" error mistakenly happening
2007-12-27 13:03:48 -05:00
Abdulaziz Ghuloum
64e54de392
Added two extra fields to the port data structure.
2007-12-18 15:36:56 -05:00
Abdulaziz Ghuloum
23b71cee3c
substantial speedup for new io layer
2007-12-12 21:22:05 -05:00
Abdulaziz Ghuloum
0e38534d2e
New IO layer is installed. Still buggy in some area but can be used
...
for bootstrapping at least.
2007-12-10 07:28:03 -05:00
Abdulaziz Ghuloum
cf82981383
Fixes bug 174497: syntax-error should not be in (rnrs) and
...
syntax-violation not completed
2007-12-07 03:00:25 -05:00
Abdulaziz Ghuloum
171604d7fc
values and call-with-values now have proper names when printed.
...
e.g. #<procedure values> and #<procedure call-with-values>
2007-12-05 01:33:47 -05:00
Abdulaziz Ghuloum
6294ea7052
* removed stuff from lib directory.
2007-12-01 01:19:45 -05:00
Abdulaziz Ghuloum
fb804a24f4
Changed version to 0.0.2-rc1 and added benchmarks to distribution.
2007-11-23 20:50:28 -05:00
Abdulaziz Ghuloum
eb30e7ab58
* Eliminates a jump-to-jump case in "flatten-code".
2007-11-21 05:31:01 -05:00
Abdulaziz Ghuloum
37aab027da
Added an optimization that removes self-references from fix-bound
...
closures.
2007-11-21 04:00:10 -05:00
Abdulaziz Ghuloum
543d59313b
* Added port-mode and set-port-mode! primitives. A port mode is
...
either the symbol ikarus-mode or the symbol r6rs-mode.
2007-11-18 19:28:59 -05:00
Abdulaziz Ghuloum
499115a226
* Minor performance fix to previous deoptimization
...
* Appended current timelog.
2007-11-17 12:53:37 -05:00
Abdulaziz Ghuloum
245203eaa0
* Global variables which are assigned (or complex) no longer have lexical
...
copy. All references and assignments to them goes through the
symbol value slot.
2007-11-17 11:06:17 -05:00
Abdulaziz Ghuloum
759474fd85
* libraries are now expanded to a special library-letrec* form.
2007-11-17 09:53:22 -05:00
Abdulaziz Ghuloum
327e6e9371
* Fixed bug 160483: described as "incorrect number of arguments" reported as "not a function"
...
- The real reason was in the register allocator, where one live
variable (the memmory size of the bytevector) was not marked live
across the call to do-overflow. When the overflow returned, the
value of that variable (which was in the %ebx register) was
trashed, leading to an incorrect bump in the allocation pointer.
- Note to self, never blame anything on cache coherency again!
2007-11-06 17:04:27 -05:00