arithmetic to compare the stack pointer with the redline).
- disabled stack overflow check elimination due to a bug in the
logic that assumes primitive calls are not recursive.
continuations work, more assembly instructions are testing in 64-bit
mode, and some arithmetic operations (shift-right, etc.) have been
fixed by removing some 32-bit dependencies.
- 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.
- (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.
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.
- 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!
* If a procedure does not make non-tail calls, stack-overflow is eliminated.
* If a procedure does not make any calls (leaf routine), then event-check
is eliminated as well.
(total savings: about 10% reduction in boot-file size)
insert-stack-overflow-check. This will make it easier to remove
unnecessary stack checks and to add some that we *may* be
missing.
* Added a $stack-overflow-check primitive that takes care of checking
and calling ikrt_stack_overflow if we did detect an overflow.