Commit Graph

406 Commits

Author SHA1 Message Date
Abdulaziz Ghuloum f1710b81ab Reimplemented vector-sort and vector-sort! 2008-01-20 16:48:55 -05:00
Abdulaziz Ghuloum 0142ba2315 - Added an optimization to the base record constructors for args up
to 4.
2008-01-19 18:15:18 -05:00
Abdulaziz Ghuloum df1cef98be - Added primop for *. 2008-01-19 16:11:00 -05:00
Abdulaziz Ghuloum 48100f3737 Added bitwise-and primop. 2008-01-19 15:44:38 -05:00
Abdulaziz Ghuloum dd5967c433 Added special cases for fixnum args to div and mod. 2008-01-19 15:33:52 -05:00
Abdulaziz Ghuloum 497d2ea8ed increased IO block-size from 4K to 16K. 2008-01-19 14:51:14 -05:00
Abdulaziz Ghuloum 323d1037ea - Fixed a performance bug that caused slowness in read-char for IO
intensive code (cat, tail, wc)
2008-01-19 13:50:53 -05:00
Abdulaziz Ghuloum 7a970db55d Fixes bug 184265: flonum? assemble bug 2008-01-19 09:47:15 -05:00
Abdulaziz Ghuloum 5bf2afce78 Added inline expansion for all cxr and cxxxr primitives. 2008-01-18 22:44:40 -05:00
Abdulaziz Ghuloum 6018e2200d Made (define foo) expand to (define foo (void)). 2008-01-18 22:18:26 -05:00
Abdulaziz Ghuloum 8adb1639f0 sqrt and exact-integer-sqrt now use the gmp sqrt procedure instead
of the previous bisection algorithm (much faster).
2008-01-17 01:26:29 -05:00
Abdulaziz Ghuloum f7dcbe87c6 Fixes round-off error in sqrt. 2008-01-12 21:05:26 -05:00
Abdulaziz Ghuloum d9cdcb8959 Fixes bug 180991: round-off error in bignum->flonum 2008-01-12 20:52:23 -05:00
Abdulaziz Ghuloum 2dc4542148 Reimplemented the guardians collector which was yellowing out since
the last update to the GC.  All tests now run without a glitch.
2008-01-12 17:32:43 -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 9e06ec35bf Fixes bug 181679: vec-graph not working 2008-01-10 00:40:39 -05:00
Abdulaziz Ghuloum 4444496609 Fixes bug 181105: syntax pattern variable list length mismatch error
is obscure
2008-01-09 08:47:48 -05:00
Abdulaziz Ghuloum 62765c2885 Fixes bug 180895: letrec error message not as helpful as let 2008-01-09 08:37:46 -05:00
Abdulaziz Ghuloum fbebc96bfa Fixed the ``bytes allocated off by n problem''. 2008-01-07 21:37:41 -05:00
Abdulaziz Ghuloum 01d0669607 sigaltstack is not used now if the OS does not provide it. 2008-01-07 19:04:46 -05:00
Abdulaziz Ghuloum 899be70aca Kind of a better implementation of ratnum->flonum. 2008-01-06 02:27:23 -05:00
Abdulaziz Ghuloum da7f05a538 Fixes more of bug 180170: (log (expt 2 1024)) now works. 2008-01-05 21:02:52 -05:00
Abdulaziz Ghuloum af6562721b Fixes bug 180170: Missing bignum sqrt 2008-01-04 21:46:50 -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 797897cc01 Fixes bug 180455: raw symbols in output of macro are not detected 2008-01-04 20:53:59 -05:00
Abdulaziz Ghuloum e35ed42f6c Added the tests that I'm using for porting. 2008-01-04 05:55:06 -05:00
Abdulaziz Ghuloum 069ff811e2 Passed tests-1.6 in 64-bit mode. 2008-01-04 05:54:35 -05:00
Abdulaziz Ghuloum 755beeb7d7 uuid and gensym were not generating pretty unique strings. fixed. 2008-01-04 05:47:18 -05:00
Abdulaziz Ghuloum 976694a3ab passing tests-1.5 2008-01-04 04:41:20 -05:00
Abdulaziz Ghuloum 71fcccd764 passing tests-1.4 2008-01-04 04:21:02 -05:00
Abdulaziz Ghuloum 2ea7321e6b passing tests-1.3 in 64-bit mode. 2008-01-04 03:49:27 -05:00
Abdulaziz Ghuloum 61dfef0cea Passing tests-1.2 in 64-bit. 2008-01-04 02:50:45 -05:00
Abdulaziz Ghuloum 5d2f14c523 Added a disassembler tool for 64-bit code (using macos otool64). Also,
passed more tests in 64-bit mode.
2008-01-03 23:03:22 -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 7fb7add0ce frame size parameters are now more modular in ikarus-data.h 2008-01-02 20:58:48 -05:00
Abdulaziz Ghuloum d9475009fd renamed:
src/cpu_has_sse2.s => src/cpu_has_sse2.S
  src/ikarus-enter.s => src/ikarus-enter.S
2008-01-02 18:05:59 -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 66e9cd6415 ikarus now compiles cleanly (but still unrunnable) in 64-bit mode. 2008-01-01 21:42:52 -05:00
Abdulaziz Ghuloum 8538098043 removed one implicit dependency on mp_bits_per_limb in ikarus.bytevectors.ss 2008-01-01 05:30:51 -05:00
Abdulaziz Ghuloum 993a3ad6c4 Fixed a couple of bugs that I introduced in previous revision. 2008-01-01 05:17:42 -05:00
Abdulaziz Ghuloum 15ea12f915 cleanup of the C files to make all ikptr->int casts ikptr->long int 2008-01-01 04:24:36 -05:00
Abdulaziz Ghuloum 1f5cef4940 sweeping the junk in assembler continues. 2007-12-31 05:34:20 -05:00
Abdulaziz Ghuloum a8abfb6bc5 Yet more cleanup in assembler. 2007-12-31 04:00:46 -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 e262407379 More cleanup in assembler 2007-12-31 02:42:53 -05:00
Abdulaziz Ghuloum e7017c159f made the assembler a little more robust as far as 32-bit registers
are used.
2007-12-30 20:22:13 -05:00
Abdulaziz Ghuloum b2d67a552d number->string now returns a fresh string for 0. 2007-12-30 18:37:37 -05:00
Abdulaziz Ghuloum 771b9699b5 Fixes bug 179015: Feature request: socket-port's id/name includes
service-name/port
2007-12-28 00:05:44 -05:00
Abdulaziz Ghuloum 4c3b17436f Added a tcp-connect-nonblocking-example.ss to demonstrate how to
handle nonblocking sockets by continuous polling.
2007-12-27 22:17:54 -05:00
Abdulaziz Ghuloum 64dac92831 Added tcp-connect-nonblocking which is line tcp-connect but puts the
socket in nonblocking mode.  An operation that would block now
raises (continuable) a condition of type &i/o-would-block which
contains the port in question.  There's no way to handle the
condition gracefully yet.
2007-12-27 22:08:27 -05:00
Abdulaziz Ghuloum fc2d958419 Ikarus now recognizes ".sls", ".ss", and ".scm" extensions as well
as ".ikarus.sls", ".ikarus.ss", and ".ikarus.scm".
2007-12-27 15:16:08 -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 648991d793 cygwin does not have getaddrinfo so I added a compatibility
implementation in src/ikarus-getaddrinfo.[ch]
2007-12-26 22:28:48 -05:00
Abdulaziz Ghuloum 4f0a816295 Added a tcp-connect procedure that takes a host name and a service
name (e.g. "www.google.com" and "http") and returns two binary ports:
the first for output and the second for input.
Both ports must be closed for the connection to close.

Also added an example in lab/tcp-connect-example.ss which connects 
to an http server, sends "GET /\n" and prints the responde.
2007-12-26 17:35:58 -05:00
Abdulaziz Ghuloum b8ed235308 Reimplemented open-output-string and get-output-string. 2007-12-26 02:16:02 -05:00
Abdulaziz Ghuloum f48ec4ad2d Fixes bug 178552: &non-continuable typo in makefile.ss 2007-12-26 01:48:37 -05:00
Abdulaziz Ghuloum ab67ee9dad Fixes bug 178385: Closed port giving incorrect error about type
instead of about being closed
2007-12-23 22:28:48 -05:00
Abdulaziz Ghuloum 1786677c73 * made unbound variable violations have &undefined condition type. 2007-12-23 19:52:18 -05:00
Abdulaziz Ghuloum 1c4ba26923 Added bitwise-length (fixing bug 178345: Missing bitwise-length) 2007-12-23 17:33:13 -05:00
Abdulaziz Ghuloum 2e7faf85c7 Fixes bug 178334: annotation structs being revealed 2007-12-23 16:23:20 -05:00
Abdulaziz Ghuloum 788b613bba Added call-with-output-file 2007-12-23 15:18:40 -05:00
Abdulaziz Ghuloum 79277bb394 Added with-output-to-string. 2007-12-23 15:12:22 -05:00
Abdulaziz Ghuloum 894a29f0d8 Added with-output-to-file. 2007-12-23 15:06:05 -05:00
Abdulaziz Ghuloum d2de3bcadb Added with-input-from-string. 2007-12-23 14:44:55 -05:00
Abdulaziz Ghuloum 5d33921c9e changed type of ikp from unsigned char* to char* 2007-12-23 13:37:48 -05:00
Abdulaziz Ghuloum 097ca03e47 Fixes bug 177638: keyword argument in syntax-rules should not be
used in substitutions
2007-12-20 06:36:00 -05:00
Abdulaziz Ghuloum b915854677 enhanced printing of annotated syntax objects. 2007-12-20 00:31:49 -05:00
Abdulaziz Ghuloum 2c31b5bf51 replaced some calls to assertion-violation with calls to
syntax-violation for better syntactic error reporting.
2007-12-19 23:42:27 -05:00
Abdulaziz Ghuloum 6eb6bf750d Added a (process "cmd" "args" ...) procedure that execs cmd, passing
args to it, and returns 4 values: 
* the process's pid
* the process's standard-input-port  (for writing)
* the process's standard-output-port (for reading)
* the process's standard-error-port  (for reading)
See lab/process-example.ss for a sample usage.
2007-12-19 22:46:07 -05:00
Abdulaziz Ghuloum 10077a6468 minor change to the value returned by input-port-byte-position
(it's up by 1 now).
2007-12-19 19:33:05 -05:00
Abdulaziz Ghuloum 917754e28e syntax-errors now give source information in their error message. 2007-12-19 19:05:23 -05:00
Abdulaziz Ghuloum a725292a4d moved match.ss and pregexp.ss to the lib directory and modified
lib/Makefile.am accordingly
2007-12-19 17:39:26 -05:00
Abdulaziz Ghuloum 22ff670e81 the reader is now capable of returning annotated expressions
containing full file-source information about each expression.
2007-12-19 00:40:25 -05:00
Abdulaziz Ghuloum 0aa846ba78 reduced size of parser, and added two helpers for reading and
recording position.
2007-12-18 23:07:57 -05:00
Abdulaziz Ghuloum 2c98be442a more simplifications to reader. 2007-12-18 22:28:27 -05:00
Abdulaziz Ghuloum 4393d2aab9 simplified reader by removing hash-semi handling. 2007-12-18 22:06:58 -05:00
Abdulaziz Ghuloum d86bfb288c Lexical errors now give filename and character position in their
error messages.
2007-12-18 19:52:15 -05:00
Abdulaziz Ghuloum 945e8473fc input-port-byte-position works for input files. 2007-12-18 17:25: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 16c52974da Fixes bug 176710: Strange error message for cadr. 2007-12-18 11:32:13 -05:00
Abdulaziz Ghuloum e65629cb9e Fixes bug 176682: some omissions in makefile.ss 2007-12-18 04:08:08 -05:00
Abdulaziz Ghuloum 1e6db4f994 fixes bug 176760: implementation-restriction-violation? spelt incorrectly 2007-12-18 04:01:42 -05:00
Abdulaziz Ghuloum df08137b7f fixes bug 176816: &i/o-file-already-exists is now included in the
condition.
2007-12-18 03:58:50 -05:00
Abdulaziz Ghuloum cee16e7463 Fixes bug 176816: Incorrect &who for open-output-file 2007-12-18 03:32:07 -05:00
Abdulaziz Ghuloum bbe388656c fixes bug 176756: define-condition-type does not work in repl 2007-12-17 11:37:10 -05:00
Abdulaziz Ghuloum 64c20409ce made read-char just as efficient as get-char by copy&paste. 2007-12-15 11:43:04 -05:00
Abdulaziz Ghuloum 372c3e369b Change of strategy in the garbage collector.
Previously: when a generation (say 2) is collected, 
  everything in gen 0 moves to gen 1
  everything in gen 1 moves to gen 2
  everything in gen 2 moves to gen 3

Now: when a generation (say 2 again) is collected
  everything in gen 0 moves to gen 3
  everything in gen 1 moves to gen 3
  everything in gen 2 moves to gen 3

So, some objects get a leap from young to old if they're lucky to be
in the right time.

Consequences: when an object is moved by the collector, we don't
need to track old->new pointers and masks because all moved objects
are clean now.  This both simplifies the collector and makes it more
efficient and might open the door for further optimization
opportunities.  For bootstrap time, we get about 5% overall 
saving and about 20% GC-time saving.  Not bad.

BEFORE:
running stats for macro expansion:
    45 collections
    2558 ms elapsed cpu time, including 212 ms collecting
    2576 ms elapsed real time, including 216 ms collecting
    186972152 bytes allocated
running stats for code generation and serialization:
    86 collections
    4365 ms elapsed cpu time, including 1444 ms collecting
    4374 ms elapsed real time, including 1449 ms collecting
    362819096 bytes allocated
running stats for the entire bootstrap process:
    131 collections
    6928 ms elapsed cpu time, including 1657 ms collecting
    6953 ms elapsed real time, including 1666 ms collecting
    549818232 bytes allocated

AFTER:
running stats for macro expansion:
    45 collections
    2506 ms elapsed cpu time, including 169 ms collecting
    2511 ms elapsed real time, including 171 ms collecting
    186968056 bytes allocated
running stats for code generation and serialization:
    86 collections
    4083 ms elapsed cpu time, including 1189 ms collecting
    4085 ms elapsed real time, including 1191 ms collecting
    362810904 bytes allocated
running stats for the entire bootstrap process:
    131 collections
    6591 ms elapsed cpu time, including 1359 ms collecting
    6599 ms elapsed real time, including 1362 ms collecting
    549805944 bytes allocated
Happy Happy Joy Joy
2007-12-15 10:43:29 -05:00
Abdulaziz Ghuloum 5a98c9e460 changed error message as suggested in bug 173369. 2007-12-15 09:00:31 -05:00
Abdulaziz Ghuloum c1a677ca4b Changed implementation of append so that it uses half the cons cells
that it previously used.  Interestingly, this reduced bootstrap time
by 60ms and 2 garbage collections!  And I thought I did not use
append :-).
2007-12-15 08:55:53 -05:00
Abdulaziz Ghuloum 8c0563b2d3 fixes bug 173369: errors are supposed to be &assertion 2007-12-15 08:22:49 -05:00
Abdulaziz Ghuloum d6efe68274 fixes bug 176519: format does not detect too-many-arguments 2007-12-15 07:32:02 -05:00
Abdulaziz Ghuloum ab55602ed1 Added string case-folding test. 2007-12-14 22:12:59 -05:00
Abdulaziz Ghuloum b2112ee9c8 changed implementation of string-foldcase to eliminate use of string
ports. (reduce overhead)
2007-12-14 21:04:54 -05:00
Abdulaziz Ghuloum 08ac2d02f9 Added a comment about why input-transcoder-attrs is missing
'utf-8-codec stuff (bug 176456)
2007-12-14 19:45:50 -05:00
Abdulaziz Ghuloum 5deeb28bbe Fixes bug 175517: Custom textual output port not recognized as a
textual port
2007-12-14 19:42:00 -05:00
Abdulaziz Ghuloum 4e66fe76e8 Fixes bug 176207: macros cannot be redefined. 2007-12-14 03:23:47 -05:00