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
23b71cee3c
substantial speedup for new io layer
2007-12-12 21:22:05 -05:00
Abdulaziz Ghuloum
af020f909b
slight change to implementation of time-gmt-offset so that the
...
gmt_off field of the tm struct is not used (not available in
cygwin).
2007-12-11 19:32:34 -05:00
Abdulaziz Ghuloum
b3f30bebff
forgot to include <sys/time.h> in ikarys-collect.c (MacOS does not
...
complain about implicit declaration of gettimeofday).
2007-12-10 15:06:47 -05:00
Abdulaziz Ghuloum
7d7ceb6480
Weeded out gcc warnings and added -Wall as a configure flag.
2007-12-10 15:02:25 -05:00
Abdulaziz Ghuloum
0d79bcd42c
removed some unused procedures from ikarus-runtime.c
2007-12-10 12:03:25 -05:00
Abdulaziz Ghuloum
0e38534d2e
New IO layer is installed. Still buggy in some area but can be used
...
for bootstrapping at least.
2007-12-10 07:28:03 -05:00
Abdulaziz Ghuloum
ea96ab85db
stage 1 of new input IO is almost complete.
2007-12-09 17:13:09 -05:00
Abdulaziz Ghuloum
1d5c069273
Fixes bug 175057: Added time-gmt-offset procedure that takes a time
...
object and returns the offset from gmt in seconds.
2007-12-09 07:20:49 -05:00
Abdulaziz Ghuloum
553c986253
Added current-time, time?, and time-seconds.
2007-12-05 02:35:14 -05:00
Abdulaziz Ghuloum
307fb64f84
Fixes bug 173467. Ikarus now probes the cpuid for SSE2 support.
2007-12-03 00:29:36 -05:00
Abdulaziz Ghuloum
68852b48e4
Fixes minor bugs 173386 and 173381: added typecast and chmod.
2007-12-01 23:54:44 -05:00
Abdulaziz Ghuloum
3056d26a9d
Moved implementation of safe make-vector to foreign-call.
2007-12-01 05:38:09 -05:00
Abdulaziz Ghuloum
33d04c8d1e
Minor bug in scheme-script.c: the new argv should be
...
null-terminated.
2007-11-30 07:41:56 -05:00
Abdulaziz Ghuloum
6386b3420a
Fixes bug 164823: ikarus.boot remaining open
2007-11-30 07:06:30 -05:00
Abdulaziz Ghuloum
59acb45c19
Fixes bug 165107: scheme-script should be a native executable, not a
...
script
2007-11-30 06:51:15 -05:00
Abdulaziz Ghuloum
ebc4deea60
Fixes bug 173001: r5rs values exported by rnrs library
...
* The following bindings were removed from (rnrs):
exact->inexact inexact->exact quotient modulo remainder string-set! string-fill!
2007-11-30 05:13:01 -05:00
Abdulaziz Ghuloum
a1adb6cc14
Missing initialization of code_ap and code_ep in ikarus-fasl.c
...
caused segfault on freebsd. The funny thing, I had initialization
code in a commented-out section. Fun fun.
2007-11-24 22:54:40 -05:00
Abdulaziz Ghuloum
ccce44fffa
Fixed dynamic loading problem in the cygwin port. Apparently, no
...
one is using the bzr version of Ikarus under cygwin since it's been
broken for some time now.
2007-11-23 02:29:46 -05:00
Abdulaziz Ghuloum
42daf68195
Added string-ci-hash and symbol-hash.
...
Slight change to ikrt_string_hash.
2007-11-22 17:04:10 -05:00
Abdulaziz Ghuloum
c25e04569c
Added string-hash.
2007-11-22 16:55:25 -05:00
Abdulaziz Ghuloum
91c365d9a6
records/structs are an iota faster to collect.
2007-11-21 16:39:16 -05:00
Abdulaziz Ghuloum
25555d7ff6
Added getenv, which takes a string and returns a string from the "unix"
...
environment.
Example:
(getenv "HOME") => "/Users/aghuloum"
(getenv "FOO") => ""
2007-11-19 12:57:50 -05:00
Abdulaziz Ghuloum
3b4d3097a1
Fixes bug 163540: allocation in bignum arithmetic does not garbage collect.
2007-11-18 10:37:13 -05:00
Abdulaziz Ghuloum
1afade6d43
* renamed ik_alloc to ik_unsafe_alloc since it was unsafe to call it
...
in general (it did not collect on heap overflow).
2007-11-18 09:12:00 -05:00
Abdulaziz Ghuloum
90759047b3
* The fasl loader has reduced the startup mmap frenzy for code
...
objects from 5242 pages (almost one page per code object) down
to 785 pages. Special thanks to Michael Adams for counting the
the number of pages that were used and touched at startup; without
his help, I wouldn't have optimized it in about 10 minutes of
coding time.
2007-11-17 13:26:27 -05:00
Abdulaziz Ghuloum
97672d5990
* Added an "exec" to the generated scheme-script.
2007-11-15 13:57:03 -05:00
Abdulaziz Ghuloum
43eb1bfcb3
Fixes bug 162145: Changing pkglibdir should rebuild ikarus-main.o and relink ikarus
2007-11-12 03:31:14 -05:00
Abdulaziz Ghuloum
31a9210f8a
Fixes bug 162143: add 'clean' target for src/scheme-script
2007-11-12 02:30:39 -05:00
Abdulaziz Ghuloum
66263b2d69
* Fixes bug 160100: ikarus.boot should not be in /usr/local/bin
...
ikarus.boot now goes to $pkglibdir/ikarus.boot which translates
to /usr/local/lib/ikarus/ikarus.boot by default.
2007-11-12 00:27:36 -05:00
Abdulaziz Ghuloum
5a6e106a44
* upgrades to new(er) versions of automake and autoconf.
...
* updated configure.ac and makefile.ac files for the new version
(applying some of the patch in bug 160100).
2007-11-10 23:50:54 -05:00
Abdulaziz Ghuloum
ff81bb99d9
* Fixed bug 160100: ikarus.boot should not be in /usr/local/bin
...
- ikarus.boot now goes to $prefix/lib/ikarus/ikarus.boot
- location of bootfile is now hard-coded in the ikarus executable
- pdf/README/COPYING/GPL-3 files go to $prefix/doc/ikarus/
- Added a 1-line "scheme-script" script to bin.
2007-11-10 08:28:19 -05:00
Abdulaziz Ghuloum
62c0643c19
* Added bitwise-not.
2007-11-08 20:57:11 -05:00
Abdulaziz Ghuloum
1b103a4ab8
* bytevector-ieee-double-ref/set! now work
2007-11-07 04:54:54 -05:00
Abdulaziz Ghuloum
7dbce6e888
* Added bytevector-ieee-double-ref and bytevector-ieee-double-set!
...
(which does not yet support big endianness)
2007-11-07 01:26:38 -05:00
Abdulaziz Ghuloum
90a243ee63
* Fixed bug 160101: modulo produces "BUG: unsupported"
2007-11-05 02:24:39 -05:00
Abdulaziz Ghuloum
b27bb61802
* Fixed some parts of bug 160101: modulo produces "BUG: unsupported"
...
* Modulo still fails on two bignum arguments, will fix later.
2007-11-04 23:01:41 -05:00
Abdulaziz Ghuloum
2c1e93f937
* Fixes bug 159774: typo in help.
2007-11-03 17:31:18 -04:00
Abdulaziz Ghuloum
67e0b4dc40
* fixed automake bugs for cygwin.
2007-10-26 00:22:16 -04:00
Abdulaziz Ghuloum
2ed6afb446
* Migrated to automake-1.9
2007-10-25 17:43:40 -04:00
Abdulaziz Ghuloum
6f576dc224
* Added license stubs to all *.ss and *.[ch] files.
2007-10-25 16:27:34 -04:00
Abdulaziz Ghuloum
30a0a9458b
* fixed a problem with building ikarus.boot on cygwin.
...
* fixed a couple of typos in ikarus-runtime.c and ikarus-winmmap.c
2007-10-18 11:48:11 -04:00
Abdulaziz Ghuloum
17fd6fe97b
* fixed a bug in mmap of sigaltstack.
2007-10-18 00:16:53 -04:00
Abdulaziz Ghuloum
99dd633f83
added:
...
scheme/Makefile.am
2007-10-17 22:07:54 -04:00
Abdulaziz Ghuloum
fdb664b61c
renamed:
...
src/scheme => scheme
2007-10-17 20:07:10 -04:00
Abdulaziz Ghuloum
e84bd5a421
* removed bin directory.
2007-10-17 20:03:31 -04:00
Abdulaziz Ghuloum
d59c2b304b
major restructuring to support autotools
...
added:
Makefile
Makefile.am
Makefile.in
aclocal.m4
config.guess
config.sub
configure
configure.ac
depcomp
install-sh
missing
mkinstalldirs
src/Makefile.am
src/Makefile.in
src/scheme/
renamed:
bin/ikarus-collect.c => src/ikarus-collect.c
bin/ikarus-data.h => src/ikarus-data.h
bin/ikarus-enter.s => src/ikarus-enter.s
bin/ikarus-exec.c => src/ikarus-exec.c
bin/ikarus-fasl.c => src/ikarus-fasl.c
bin/ikarus-flonums.c => src/ikarus-flonums.c
bin/ikarus-main.c => src/ikarus-main.c
bin/ikarus-numerics.c => src/ikarus-numerics.c
bin/ikarus-print.c => src/ikarus-print.c
bin/ikarus-runtime.c => src/ikarus-runtime.c
bin/ikarus-symbol-table.c => src/ikarus-symbol-table.c
bin/ikarus-verify-integrity.c => src/ikarus-verify-integrity.c
bin/ikarus-weak-pairs.c => src/ikarus-weak-pairs.c
bin/ikarus-winmmap.c => src/ikarus-winmmap.c
bin/ikarus-winmmap.h => src/ikarus-winmmap.h
src/asm-tests.ss => src/scheme/asm-tests.ss
src/dotests.ss => src/scheme/dotests.ss
src/ikarus => src/scheme/ikarus
src/ikarus.apply.ss => src/scheme/ikarus.apply.ss
src/ikarus.bytevectors.ss => src/scheme/ikarus.bytevectors.ss
src/ikarus.cafe.ss => src/scheme/ikarus.cafe.ss
src/ikarus.chars.ss => src/scheme/ikarus.chars.ss
src/ikarus.code-objects.ss => src/scheme/ikarus.code-objects.ss
src/ikarus.codecs.ss => src/scheme/ikarus.codecs.ss
src/ikarus.collect.ss => src/scheme/ikarus.collect.ss
src/ikarus.command-line.ss => src/scheme/ikarus.command-line.ss
src/ikarus.compiler.altcogen.ss => src/scheme/ikarus.compiler.altcogen.ss
src/ikarus.compiler.ss => src/scheme/ikarus.compiler.ss
src/ikarus.control.ss => src/scheme/ikarus.control.ss
src/ikarus.date-string.ss => src/scheme/ikarus.date-string.ss
src/ikarus.fasl.ss => src/scheme/ikarus.fasl.ss
src/ikarus.fasl.write.ss => src/scheme/ikarus.fasl.write.ss
src/ikarus.fixnums.ss => src/scheme/ikarus.fixnums.ss
src/ikarus.guardians.ss => src/scheme/ikarus.guardians.ss
src/ikarus.handlers.ss => src/scheme/ikarus.handlers.ss
src/ikarus.hash-tables.ss => src/scheme/ikarus.hash-tables.ss
src/ikarus.intel-assembler.ss => src/scheme/ikarus.intel-assembler.ss
src/ikarus.io-ports.ss => src/scheme/ikarus.io-ports.ss
src/ikarus.io-primitives.ss => src/scheme/ikarus.io-primitives.ss
src/ikarus.io-primitives.unsafe.ss => src/scheme/ikarus.io-primitives.unsafe.ss
src/ikarus.io.input-files.ss => src/scheme/ikarus.io.input-files.ss
src/ikarus.io.input-strings.ss => src/scheme/ikarus.io.input-strings.ss
src/ikarus.io.output-files.ss => src/scheme/ikarus.io.output-files.ss
src/ikarus.io.output-strings.ss => src/scheme/ikarus.io.output-strings.ss
src/ikarus.lists.ss => src/scheme/ikarus.lists.ss
src/ikarus.load.ss => src/scheme/ikarus.load.ss
src/ikarus.main.ss => src/scheme/ikarus.main.ss
src/ikarus.multiple-values.ss => src/scheme/ikarus.multiple-values.ss
src/ikarus.numerics.ss => src/scheme/ikarus.numerics.ss
src/ikarus.pairs.ss => src/scheme/ikarus.pairs.ss
src/ikarus.posix.ss => src/scheme/ikarus.posix.ss
src/ikarus.predicates.ss => src/scheme/ikarus.predicates.ss
src/ikarus.pretty-print.ss => src/scheme/ikarus.pretty-print.ss
src/ikarus.promises.ss => src/scheme/ikarus.promises.ss
src/ikarus.reader.ss => src/scheme/ikarus.reader.ss
src/ikarus.records.procedural.ss => src/scheme/ikarus.records.procedural.ss
src/ikarus.singular-objects.ss => src/scheme/ikarus.singular-objects.ss
src/ikarus.sort.ss => src/scheme/ikarus.sort.ss
src/ikarus.strings.ss => src/scheme/ikarus.strings.ss
src/ikarus.structs.ss => src/scheme/ikarus.structs.ss
src/ikarus.symbols.ss => src/scheme/ikarus.symbols.ss
src/ikarus.timer.ss => src/scheme/ikarus.timer.ss
src/ikarus.trace.ss => src/scheme/ikarus.trace.ss
src/ikarus.transcoders.ss => src/scheme/ikarus.transcoders.ss
src/ikarus.unicode-data.ss => src/scheme/ikarus.unicode-data.ss
src/ikarus.vectors.ss => src/scheme/ikarus.vectors.ss
src/ikarus.writer.ss => src/scheme/ikarus.writer.ss
src/makefile.ss => src/scheme/makefile.ss
src/pass-specify-rep-primops.ss => src/scheme/pass-specify-rep-primops.ss
src/pass-specify-rep.ss => src/scheme/pass-specify-rep.ss
src/psyntax.builders.ss => src/scheme/psyntax.builders.ss
src/psyntax.compat.ss => src/scheme/psyntax.compat.ss
src/psyntax.config.ss => src/scheme/psyntax.config.ss
src/psyntax.expander.ss => src/scheme/psyntax.expander.ss
src/psyntax.internal.ss => src/scheme/psyntax.internal.ss
src/psyntax.library-manager.ss => src/scheme/psyntax.library-manager.ss
src/r6rs-records.ss => src/scheme/r6rs-records.ss
src/rationalize.ss => src/scheme/rationalize.ss
src/run-tests.ss => src/scheme/run-tests.ss
src/set-operations.ss => src/scheme/set-operations.ss
src/tests => src/scheme/tests
src/tests.libraries.ss => src/scheme/tests.libraries.ss
src/todo-r6rs.ss => src/scheme/todo-r6rs.ss
src/unicode => src/scheme/unicode
modified:
src/ikarus.boot
2007-10-17 19:59:37 -04:00
Abdulaziz Ghuloum
90bf017e61
* Added full cygwin port.
2007-10-16 02:10:51 -04:00
Abdulaziz Ghuloum
d6eeb0ab7a
* removed all calls to mprotect from the runtime system.
2007-10-15 17:58:03 -04:00
Abdulaziz Ghuloum
6705a7c2fa
* exit now calls ikrt_exit which deallocates the pcb then exits.
...
* Added allocation-table implementation (ikarus.at.[hc]) which are
not used yet.
2007-10-15 10:41:08 -04:00