Commit Graph

671 Commits

Author SHA1 Message Date
Abdulaziz Ghuloum 64aca7c80b one more fix for 64-bit jumps and calls. Some conditional jumps
required cross-code offsets which are now eliminated.
2009-12-31 16:41:13 +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 69207de752 fixed a bug in $flonum-sbe that caused a read of 4 bytes past the
end of the flonum object in 64-bit mode (manifesting in a segfault
when running make check on fedora 64-bit).
2009-12-29 05:03:47 +03:00
Abdulaziz Ghuloum 84e0f4ab6d fixed bug in quasiquote when the symbols quasiquote, unquote,
unquote-splicing are introduced.
2009-10-21 08:55:42 +03:00
Abdulaziz Ghuloum d03fbfe4ef fixed bug in expanding macros in internal definitions which were
incorrectly implemented as little modules (with their own little
scope) that export everything.  They now use the same scope as the
main definitions.
2009-10-19 23:28:36 +03:00
Abdulaziz Ghuloum 444aa9bbf0 annotation-expressions are now tracked independently of marks and
shifts.
2009-10-19 21:28:00 +03:00
Abdulaziz Ghuloum 5a2de815cb fixed bug in writing strings containing #\x85; and #\x2028;. 2009-10-16 19:15:17 +03:00
Abdulaziz Ghuloum e10ea87a31 fixed a bug in "random" not terminating for large numbers 2009-10-16 10:03:13 +03:00
Abdulaziz Ghuloum 858198b886 fixed a bug in using a precompiled variable transformers. 2009-10-16 09:54:14 +03:00
Abdulaziz Ghuloum ad0612905a fixed bug in code generation for (fxarithmetic-shift-right x <n>)
where <n> is unknown.
2009-09-30 04:36:09 +03:00
Abdulaziz Ghuloum c375d537a3 added waiter-prompt-string parameter (chez compatible) 2009-09-25 00:56:09 +03:00
Abdulaziz Ghuloum 574942c1b0 fixed a bug when reading past eof in bytevector and string input
ports where the index and size of the buffer get messed up.
2009-09-21 09:29:31 +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 7fee24e09e libpthread is linked to ikarus automatically if the system has
pthreads.
2009-09-03 00:07:09 +03:00
Abdulaziz Ghuloum 4ce666c8d6 applied patch from andreas rottmann for providing "process*" which
is the kitchen sink of subprocess creation.
2009-09-02 22:47:57 +03:00
Abdulaziz Ghuloum f33e304606 updated to newer auto tools and fixed c32 and c64 to be more generic. 2009-09-02 20:52:56 +03:00
Abdulaziz Ghuloum d231301e2f added workaround for missing CPP definitions on FreeBSD. 2009-08-26 19:13:40 +03:00
Abdulaziz Ghuloum 399a428382 Added #include <limits.h> to src/ikarus-runtime.c. 2009-08-26 18:50:55 +03:00
Abdulaziz Ghuloum 8adc203ded string-hash and string-ci-hash now return nonnegative fixnums only. 2009-08-26 18:46:55 +03:00
Abdulaziz Ghuloum 57de27827a custom hashtables' hash functions can now return any exact integer,
instead of returning nonnegative exact integers.
2009-08-26 18:23:07 +03:00
Abdulaziz Ghuloum c0233db219 fixed the bahavior of fxaithmetic-shift{-left,-right,} when the
shift amount is not in range and when the result overflows.
2009-08-26 18:04:18 +03:00
Abdulaziz Ghuloum b1c9fda05c bytevector-{u,s}int-set! now err when the size argument is not
positive.
2009-08-26 16:40:59 +03:00
Abdulaziz Ghuloum 8bd012bfeb fx{+,-,*}/carry now chech that all their arguments are fixnums
(causes segfaults when unchecked).
2009-08-24 15:22:51 +03:00
Abdulaziz Ghuloum 402c4aa468 fixed bug in shift-left by multiples of 32/64 bits where the shifted
data was misplaced in the resulting number.
2009-08-03 20:55:14 +03:00
Abdulaziz Ghuloum 22dc82567d added a "warning" procedure, that's like assertion-violation and
error except that it throws a warning via raise-continuable.
2009-08-03 10:36:18 +03:00
Abdulaziz Ghuloum a884cc9ff7 fixed bytevector-ieee-double-{ref,set!} that use wrong endianness
when the index is unaligned.
2009-08-02 21:44:02 +03:00
Abdulaziz Ghuloum 7e5b27f822 wrong alignment check in bytevector-{s,u}64-set! fixed. 2009-08-02 21:23:27 +03:00
Abdulaziz Ghuloum c67865ff09 alignment requirement for bytevector-u64-ref and bytevector-s64-ref
is removed.
2009-08-02 15:12:58 +03:00
Abdulaziz Ghuloum 97dfb20a53 fixed incorrect error message for non-real arguments to negative?,
positive?, and abs.
2009-08-02 15:00:54 +03:00
Abdulaziz Ghuloum e3ce873118 mantissa-width syntax of inexact numbers is now parsed and ignored. 2009-08-02 14:01:35 +03:00
Abdulaziz Ghuloum 3e71a5aa5e fixed reading of polar notation 2009-08-02 12:23:07 +03:00
Abdulaziz Ghuloum b2bca8a00a some refactoring of string-to-number parsers 2009-08-02 10:47:39 +03:00
Abdulaziz Ghuloum 4df1dcb25a attempting to reference/modify unexportable bindings was crashing
the expander instead of raising a proper error.  fixed.
2009-08-01 22:18:26 +03:00
Abdulaziz Ghuloum b586d2e21a some asserion violations in the reader are converted to &lexicals so
that the repl displays them properly.  E.g., 
(read (open-string-input-port "#!r6rs |foo|")) shows an &assertion,
but typing #!r6rs |foo| at the repl causes the repl to reset without
a message.
2009-07-30 21:46:11 +03:00
Abdulaziz Ghuloum af233a2ac2 added post-gc-hooks, a list of thunks that are invoked after garbage
collection.
2009-07-30 14:19:46 +03:00
Abdulaziz Ghuloum 7d2c1b0b9e added missing punctuations that are allowd in scribble parens. 2009-07-29 19:43:49 +03:00
Abdulaziz Ghuloum ac3581286f Ikarus now supports PLT's Scribble syntax!
- The only thing unsupported is the transposition of punctuations,
  e.g., @`foo{bar} => `@foo{bar}.
2009-07-29 19:07:03 +03:00
Abdulaziz Ghuloum cdea4e0942 added define-fluid-syntax and fixed fluid-let-syntax. 2009-07-28 22:12:48 +03:00
Abdulaziz Ghuloum 7961405db7 input ports now support "input-port-column-number" and
"input-port-row-number".  These currently work for string ports,
latin-1 ports, and utf-8 ports as long as only ascii chars are 
read.
2009-07-23 16:35:05 +03:00
Abdulaziz Ghuloum 9e764c76b4 - eqv? and equal? now guarantee #t when given two NaNs (unspecified
by R6RS).
2009-07-20 10:01:05 +03:00
Abdulaziz Ghuloum fe88c7bd0d fixed incorrect setting of IKARUS_LIBRARY_PATH. 2009-07-06 13:20:09 +03:00
Abdulaziz Ghuloum acbd00c356 fixed a bug in expanding macros in definition context where the
scope would get messed up when the macro call appears inside
let/letrec-syntax.  Basically, in the following example,

(let-syntax ([id-macro (syntax-rules () [(_ x) x])])
  (let () 
    (define (foo) (display "not ok\n")) 
    (let-syntax ([foo (syntax-rules () [(_) (display "ok\n")])])
      (id-macro (foo)))))

the call to (id-macro) would make (foo) refer to the foo in the
internal-definition context (the not ok one) instead of the
let-syntax one.

On the plus side, macro expansion is now half a second faster!
2009-07-06 12:14:08 +03:00
Abdulaziz Ghuloum cda06eba58 added a parameter to switch between different letrec handling routines 2009-07-06 12:07:18 +03:00
Abdulaziz Ghuloum 832fe616d2 revived waddell's letrec/letrec* optimization 2009-07-04 21:05:03 +03:00
Abdulaziz Ghuloum 7a6ae6322c added basic letrec/letrec* handling (as in the one defined in R5RS) 2009-07-04 20:33:38 +03:00
Abdulaziz Ghuloum cc569cce64 letrec optimization moved into its own file. 2009-07-04 19:47:15 +03:00
Abdulaziz Ghuloum 0cc2aae7dc added two aux libraries for parsing and formatting floating point
numbers.
2009-06-30 19:01:20 +03:00
Abdulaziz Ghuloum b324709e86 - ratnum->flonum now handles more numbers, though it's now slower
and may still be incorrect in some cases.
- (- <compnum> <flonum>) was raising an incorrect error.
2009-06-30 07:27:26 +03:00
Abdulaziz Ghuloum 7de0f39736 fixed floating point exception in (modulo <fx> 0). 2009-06-30 04:10:51 +03:00
Abdulaziz Ghuloum 6e7f0ccf84 fixed a bug in get-bytevector-n! when n == 1. 2009-06-30 03:51:01 +03:00