Commit Graph

57 Commits

Author SHA1 Message Date
Abdulaziz Ghuloum 943a72f01f fixed a bug in the register allocator that was rewriting
mov8 mem1 -> mem2
to 
    mov mem1 -> reg
    mov8 reg -> mem2
instead of
    mov8 mem1 reg
    mov reg mem2
which causes unaligned and invalid memory access when the
address mem1 is at a page boundary and the next page is 
unmapped.
2010-01-24 00:13:01 +03:00
Abdulaziz Ghuloum 820eb7dcb9 Fixed the ``relocation error'' that happens in 64-bit mode. What
used to be a relative jump from one code object to another is now
turned into a pc-relative jump, where the jump targets are stored
somewhere at the bottom of the code that performs the jump:

old code sequence:

        call-relative (Ltarget - L0)
    L0: ...

new code sequence:

        call-pc-relative (L1 - L0)
    L0: ...
        ...
    L1: <8-byte Ltarget>
2009-12-31 03:41:22 +03:00
Abdulaziz Ghuloum 4c2b13ebe0 fixed invalid code generation of (movl k0 (disp k1 k2)) which is
invalid in X86_64.
2009-09-12 22:20:07 +03:00
Abdulaziz Ghuloum eec9453fc7 - if IKARUS_LIBRARY_PATH is set, "." is no longer added to
library-path, so, whereever you set it, you should decide whether
  to include "." or exclude it.
  ["$prefix/lib/ikarus" is still added to the path so that multiple
  versions of ikarus can exist and each uses its own sources dir
  without interference]

- some cleanup in compiler to use the new include library instead of 
  "ikarus.include-src.ss" which is no longer needed.
2009-05-30 10:46:45 +03:00
Abdulaziz Ghuloum f3b071548d - improved debugger speed when debug-calling a primitive operation.
Ack now runs only 80 times slower in debug mode (down from 360
  times), and bootstrapping is now done in 170 seconds instead of
  500 (nondebug time is still less than 8 seconds).
2009-05-24 11:59:18 +03:00
Abdulaziz Ghuloum 370454e4fc - fixed a small bug in the compile. [use of struct-ref with an
index out of range, generated by improper use of struct-match]
2009-05-14 08:59:41 +03:00
Abdulaziz Ghuloum 5c941ea62c Out-of-tree building and testing now seems to work 2009-04-06 18:47:40 +03:00
Abdulaziz Ghuloum 5ba29fe3aa - added missing import into (ikarus foreign)
- fixed compiler bug in compiler (impose-evaluation-order was not
  stripping all annotations).
2008-11-23 15:26:12 -05:00
Abdulaziz Ghuloum 814c797633 - removed bset/h instruction from the compiler (it was rarely used
and not implemented 100% correctly)
- fixed parameterize to allow (parameterize () def ... exp exp ...)
2008-09-06 04:17:20 -07:00
Abdulaziz Ghuloum 9b9464229a - fixed how stack overflow check is performed (now using unsigned
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.
2008-08-13 22:28:22 -07:00
Abdulaziz Ghuloum e24356eb4a scheme-script is now its own program; it does not fork and exec
ikarus, and therefore does not interfere with ikarus's command line
parsing.
2008-08-09 05:47:44 -07:00
Abdulaziz Ghuloum 39e84d1395 simplified parameterize macro. 2008-08-02 10:11:04 -07:00
Abdulaziz Ghuloum f144722b36 bumped the number of registers available on AMD64 by 4. 2008-07-30 07:47:22 -07:00
Abdulaziz Ghuloum 3b80d4f321 fixed a bug in quotient and div when given (least-fixnum) and -1. 2008-07-26 12:28:51 -07:00
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 4f48c55bfc all existing tests pass under 64-bit 2008-07-19 14:41:06 -07:00
Abdulaziz Ghuloum 81a1a640df more progress on the AMD64 front, fixing more numeric and more cogen
64-bit bugs.
2008-07-18 22:21:57 -07:00
Abdulaziz Ghuloum 01c4afa320 Major work towards the AMD64 port. Most important of which is that
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.
2008-07-18 01:35:13 -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 041f9fdafa Fixed a problem in code generator that was producing invalid memory
addressing for predicate operations.
2008-06-13 04:15:25 -07:00
Abdulaziz Ghuloum 3bddca30c4 allocation overflow check sequence is a little tighter now. 2008-06-10 23:01:22 -07:00
Abdulaziz Ghuloum b74e3976df allocation check was still incorrect when the ap+size overflows and
shows up to be less than the end of allocation pointer.
2008-05-25 15:32:22 -07:00
Abdulaziz Ghuloum 7f0f127081 Allocation overflow check was incorrectly using signed comparison
instead of an unsigned one.
2008-05-25 14:39:03 -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 d02e9fe035 Passing 709 tests in 64-bit mode 2008-04-12 15:06:55 -04:00
Abdulaziz Ghuloum 866b2b1c17 Now passing 682 tests in 64-bit mode. 2008-04-09 05:34:36 -04:00
Abdulaziz Ghuloum f63f85e1cc 570 tests in 64-bit mode 2008-04-09 03:05:19 -04:00
Abdulaziz Ghuloum aa44ce2733 Passing 548 tests in 64-bit mode. 2008-04-08 03:57:13 -04:00
Abdulaziz Ghuloum 6bdb38ca16 fixed bug in ($make-vector 0) 2008-04-07 12:32:55 -04:00
Abdulaziz Ghuloum 85d09cbc1c fxarithmetic-shift-left now detects overflows properly. 2008-03-18 00:49:24 -04: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 f6e5e4d5b4 Added -m32 to CFLAGS/LDFLAGS, updated copyright dates and version no. 2008-01-29 00:34:34 -05:00
Abdulaziz Ghuloum df1cef98be - Added primop for *. 2008-01-19 16:11:00 -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 976694a3ab passing tests-1.5 2008-01-04 04:41:20 -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 f44b9285c7 small bug fix in assembler for code like (movl reg (disp reg reg)) 2007-12-31 03:02:12 -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 3a3bc7dcc1 * keyboard interrupts are now continuable. 2007-11-15 13:40:36 -05:00
Abdulaziz Ghuloum efa2f0ef43 * '#!eof no longer signals an assembler error
- bug reported by micheal adams in person.
2007-11-11 01:04:07 -05:00
Abdulaziz Ghuloum 5ce6ca4efb * Added bytevector-ieee-single-native-ref and bytevector-ieee-single-native-set! 2007-11-08 22:22:24 -05:00
Abdulaziz Ghuloum 1b103a4ab8 * bytevector-ieee-double-ref/set! now work 2007-11-07 04:54:54 -05:00