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.