Mikael Djurfeldt [Wed, 22 Mar 2000 02:09:10 +0000 (02:09 +0000)]
* dynwind.c (scm_swap_bindings): Ditto.
Mikael Djurfeldt [Wed, 22 Mar 2000 00:21:56 +0000 (00:21 +0000)]
Code layout
Mikael Djurfeldt [Tue, 21 Mar 2000 23:39:00 +0000 (23:39 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 23:36:28 +0000 (23:36 +0000)]
Oops
Mikael Djurfeldt [Tue, 21 Mar 2000 23:14:43 +0000 (23:14 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 23:14:31 +0000 (23:14 +0000)]
* async.c, __scm.h: Removed lots of the old async click logic. It
is possible to reinsert it by defining GUILE_OLD_ASYNC_CLICK in
__scm.h. Let's try this out and dump the old code after the
threads reorganization.
(set-tick-rate, set-switch-rate): Conditionally removed.
Mikael Djurfeldt [Tue, 21 Mar 2000 20:33:33 +0000 (20:33 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 20:33:18 +0000 (20:33 +0000)]
* gc.c (scm_gc_mark): Bugfix 1: The recent SCM_PACK/UNPACK change
made SCM values into pointers. This turned an arithmetic
computation of the address of the vcell into a pointer-arithmetic
one, thereby screwing up marking of structs.
Bugfix 2: Removed incompletely introduced loop variable `j' used
when protecting the tail array of a struct.
Dirk Herrmann [Tue, 21 Mar 2000 16:44:18 +0000 (16:44 +0000)]
Don't cast SCM values to pointers.
Dirk Herrmann [Tue, 21 Mar 2000 15:49:53 +0000 (15:49 +0000)]
Make scm_strhash's string parameter constant.
Dirk Herrmann [Tue, 21 Mar 2000 11:14:24 +0000 (11:14 +0000)]
Fix: Don't cast SCM values to pointer. Use SCM2PTR instead.
Dirk Herrmann [Tue, 21 Mar 2000 10:58:36 +0000 (10:58 +0000)]
Fixed entry date.
Dirk Herrmann [Tue, 21 Mar 2000 10:04:07 +0000 (10:04 +0000)]
Fix: Don't unpack results of SCM_INUM.
Mikael Djurfeldt [Tue, 21 Mar 2000 03:58:05 +0000 (03:58 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 03:57:53 +0000 (03:57 +0000)]
* gc.c, gc.h (SCM_MIN_YIELD_1, SCM_MIN_YIELD_2,
min_yield_fraction, min_yield, adjust_min_yield): Renamed from
SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2, gc_trigger_fraction,
gc_trigger, adjust_gc_trigger.
* gc.c (SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2):
Adjusted to 45000 cells, 40% and 40%. Gives quick startup
without extra heap allocation.
Mikael Djurfeldt [Tue, 21 Mar 2000 03:56:07 +0000 (03:56 +0000)]
* init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
Mikael Djurfeldt [Tue, 21 Mar 2000 02:38:12 +0000 (02:38 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 02:37:59 +0000 (02:37 +0000)]
* gc.c (alloc_some_heap): Further improvement of minimal heap size
prediction.
(SCM_MAX): New macro.
(scm_freelist_t): New field: collected_1. Previous amount of
collected cells.
(gc_sweep_freelist_finish): Trigger based on two last values of
freelist->collected to avoid unnecessary allocation due to
temporary peaks.
Mikael Djurfeldt [Tue, 21 Mar 2000 01:41:42 +0000 (01:41 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 21 Mar 2000 01:41:26 +0000 (01:41 +0000)]
* policy/names.text: New file.
Mikael Djurfeldt [Tue, 21 Mar 2000 01:22:15 +0000 (01:22 +0000)]
*** empty log message ***
Dirk Herrmann [Mon, 20 Mar 2000 18:14:07 +0000 (18:14 +0000)]
A couple of typing problems (at leat partially) resolved.
Mikael Djurfeldt [Mon, 20 Mar 2000 15:05:46 +0000 (15:05 +0000)]
*** empty log message ***
Mikael Djurfeldt [Mon, 20 Mar 2000 15:05:33 +0000 (15:05 +0000)]
(gc_sweep_freelist_finish): Inserted explanation of use of
gc_trigger.
Mikael Djurfeldt [Mon, 20 Mar 2000 14:57:19 +0000 (14:57 +0000)]
*** empty log message ***
Mikael Djurfeldt [Mon, 20 Mar 2000 14:57:04 +0000 (14:57 +0000)]
* gc.c (scm_gc_stats): Inserted explanation of local_scm_mtrigger
etc.
(scm_gc_yield_1): New variable: Holds previous yield. Used to
make better judgements.
Mikael Djurfeldt [Mon, 20 Mar 2000 14:39:36 +0000 (14:39 +0000)]
*** empty log message ***
Mikael Djurfeldt [Mon, 20 Mar 2000 14:39:23 +0000 (14:39 +0000)]
* print.h, stacks.h, options.c, options.h: Changed C++
commentaries to C.
Mikael Djurfeldt [Mon, 20 Mar 2000 14:31:38 +0000 (14:31 +0000)]
*** empty log message ***
Mikael Djurfeldt [Mon, 20 Mar 2000 14:31:28 +0000 (14:31 +0000)]
* options.h (scm_option): Changed C++ commentary to C.
Dirk Herrmann [Mon, 20 Mar 2000 14:00:27 +0000 (14:00 +0000)]
Fix a couple of SCM_PACK / SCM_UNPACK uncleanlynesses.
Mikael Djurfeldt [Mon, 20 Mar 2000 13:39:44 +0000 (13:39 +0000)]
*** empty log message ***
Mikael Djurfeldt [Mon, 20 Mar 2000 13:39:33 +0000 (13:39 +0000)]
* gc.c (adjust_gc_trigger): Improved documentation.
(alloc_some_heap): Since gc_trigger is used against
freelist->collected, this is the value which should be used to
predict minimum growth.
Dirk Herrmann [Mon, 20 Mar 2000 04:19:54 +0000 (04:19 +0000)]
Fix mixup of packed/unpacked SCM values. (Thanks Thien-Thi Nguyen.)
Dirk Herrmann [Mon, 20 Mar 2000 04:02:56 +0000 (04:02 +0000)]
scm_ash: Fixed typing problems with the second parameter and added some
documentation. (Thanks Thien-Thi Nguyen for indicating the problem.)
Mikael Djurfeldt [Sun, 19 Mar 2000 21:00:43 +0000 (21:00 +0000)]
*** empty log message ***
Mikael Djurfeldt [Sun, 19 Mar 2000 21:00:30 +0000 (21:00 +0000)]
* gc.c, gc.h (scm_gc_yield): New variable.
(adjust_gc_trigger): Use scm_gc_yield.
(alloc_some_heap): Use scm_gc_yield instead of
scm_gc_cells_collected.
Mikael Djurfeldt [Sun, 19 Mar 2000 20:05:47 +0000 (20:05 +0000)]
*** empty log message ***
Mikael Djurfeldt [Sun, 19 Mar 2000 20:05:29 +0000 (20:05 +0000)]
* debug.c: Added #include "root.h". (Thanks to Thien-Thi Nguyen.)
Mikael Djurfeldt [Sun, 19 Mar 2000 20:05:19 +0000 (20:05 +0000)]
* coop-threads.c: Addd #include "root.h", #include "strings.h".
Mikael Djurfeldt [Sun, 19 Mar 2000 20:05:02 +0000 (20:05 +0000)]
* gc.c (scm_gc_for_newcell, adjust_gc_trigger): Improved GC
trigger adjustmeant: Take yield (freed cells) for all freelists
into account.
(SCM_INIT_HEAP_SIZE_1, SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Tuned
to 50000 cell heap with 45% trigger.
(scm_gc_cells_collected): Reintroduced.
(SCM_HEAP_SIZE): New macro.
(scm_gc_sweep): Reintroduced correct computation of
scm_cells_allocated.
(scm_freelist_t): Corrected commentary for field `cluster_size':
Clustersize counts objects, not cells; New member
`clusters_allocated'.
Michael Livshin [Sun, 19 Mar 2000 19:01:16 +0000 (19:01 +0000)]
* *.[hc]: add Emacs magic at the end of file, to ensure GNU
indentation style.
Mikael Djurfeldt [Sun, 19 Mar 2000 13:35:17 +0000 (13:35 +0000)]
*** empty log message ***
Mikael Djurfeldt [Sun, 19 Mar 2000 13:35:03 +0000 (13:35 +0000)]
* threads.h: Added #include "libguile/throw.h". (Thanks to
Thien-Thi Nguyen.)
Michael Livshin [Sat, 18 Mar 2000 11:09:41 +0000 (11:09 +0000)]
* tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.
* gc.h: (typedef struct scm_freelist_t) remove from here.
* gc.c: (CELL_UP, CELL_DN) make these macros take additional
parameter (the span).
(CLUSTER_SIZE_IN_BYTES, ALIGNMENT_SLACK) new macros.
(typedef struct scm_freelist_t) move here from gc.h, it had no
business being externally visible.
(typedef struct scm_heap_seg_data_t) renamed from
scm_heap_seg_data, to be style-compliant.
(scm_mark_locations) if the possible pointer points to a
multy-cell, check that it's properly aligned.
(init_heap_seg) alighn multy-cells properly, work with the
assumption that the segment size divides cleanly by cluster size
(so that there's no spill).
(round_to_cluster_size) new function.
(alloc_some_heap, make_initial_segment) use round_to_cluster_size
to satisfy the new init_heap_seg invariant.
Dirk Herrmann [Sat, 18 Mar 2000 09:16:48 +0000 (09:16 +0000)]
Only include async.h where it is actually needed.
Dirk Herrmann [Sat, 18 Mar 2000 08:44:04 +0000 (08:44 +0000)]
Only include root.h where it is actually needed.
Dirk Herrmann [Fri, 17 Mar 2000 18:11:58 +0000 (18:11 +0000)]
Only include strings.h where it is actually needed.
Dirk Herrmann [Fri, 17 Mar 2000 16:10:13 +0000 (16:10 +0000)]
Only include ports.h where it is actually needed.
Dirk Herrmann [Fri, 17 Mar 2000 15:23:03 +0000 (15:23 +0000)]
Only include vectors.h in those files, where it is actually needed.
Dirk Herrmann [Fri, 17 Mar 2000 13:37:33 +0000 (13:37 +0000)]
Removed empty file genio.h and references to it.
Mikael Djurfeldt [Fri, 17 Mar 2000 09:04:49 +0000 (09:04 +0000)]
(SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -50.
Mikael Djurfeldt [Fri, 17 Mar 2000 08:58:38 +0000 (08:58 +0000)]
*** empty log message ***
Mikael Djurfeldt [Fri, 17 Mar 2000 08:58:27 +0000 (08:58 +0000)]
* gc.c, gc.h: Cleanup of the change of 2000-03-15.
Cluster sizes are now independent of GC trigger values.
GUILE_GC_TRIGGER_n can now specify a relative trigger value:
A negative integer gives fraction of total heap size in percent.
(SCM_GC_TRIGGER_1, SCM_GC_TRIGGER_2): Default values set to -40.
Mikael Djurfeldt [Fri, 17 Mar 2000 08:09:25 +0000 (08:09 +0000)]
*** empty log message ***
Mikael Djurfeldt [Fri, 17 Mar 2000 08:09:14 +0000 (08:09 +0000)]
* gc.c, gc.h: Cleanup of the change of 2000-03-15.
Cluster sizes are now independent of GC trigger values.
GUILE_GC_TRIGGER_n can now specify a relative trigger value:
A negative integer gives fraction of total heap size in percent.
Mikael Djurfeldt [Fri, 17 Mar 2000 08:09:03 +0000 (08:09 +0000)]
* init.c (scm_boot_guile_1): Introduced new variable
GUILE_MAX_SEGMENT_SIZE; New environment variable names:
GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
Jim Blandy [Thu, 16 Mar 2000 21:11:45 +0000 (21:11 +0000)]
Doc fix.
Mikael Djurfeldt [Thu, 16 Mar 2000 20:17:52 +0000 (20:17 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 18:23:00 +0000 (18:23 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 18:22:50 +0000 (18:22 +0000)]
* __scm.h (GC_FREE_SEGMENTS): Disable this until we have made
freeing of segment work with the new GC scheme. (Thanks to
Michael Livshin.)
Mikael Djurfeldt [Thu, 16 Mar 2000 04:26:12 +0000 (04:26 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 04:21:20 +0000 (04:21 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 04:04:25 +0000 (04:04 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 03:59:35 +0000 (03:59 +0000)]
* gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
defined.
(scm_free_list_length): New procedure (GUILE_DEBUG).
Mikael Djurfeldt [Thu, 16 Mar 2000 01:29:21 +0000 (01:29 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 01:29:00 +0000 (01:29 +0000)]
* gc.c, gc.h (scm_map_free_list): Define also if GUILE_DEBUG is
defined.
Mikael Djurfeldt [Thu, 16 Mar 2000 01:18:32 +0000 (01:18 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 01:18:13 +0000 (01:18 +0000)]
* gc.c (scm_gc_sweep): Moved variable n_objects to inner sweep
loop and declare as register.
Mikael Djurfeldt [Thu, 16 Mar 2000 00:06:34 +0000 (00:06 +0000)]
*** empty log message ***
Mikael Djurfeldt [Thu, 16 Mar 2000 00:04:32 +0000 (00:04 +0000)]
* gc.c (scm_gc_sweep): Sigh... forgot to clear private freelists
after GC.
Mikael Djurfeldt [Wed, 15 Mar 2000 19:08:27 +0000 (19:08 +0000)]
*** empty log message ***
Greg J. Badros [Wed, 15 Mar 2000 16:54:30 +0000 (16:54 +0000)]
*** empty log message ***
Greg J. Badros [Wed, 15 Mar 2000 16:28:13 +0000 (16:28 +0000)]
* fluids.c: Docstring patch from Keisuke Nishida. Some
reindentation, too, and a couple formals renamed. Should
fluid-set! return UNSPECIFIED instead of a value?
Greg J. Badros [Wed, 15 Mar 2000 16:25:37 +0000 (16:25 +0000)]
* Makefile.am: Separate out DOT_X_FILES and DOT_DOC_FILES, and
generate the latter from the concrete listing of the former. Then
make guile-procedures.txt depend on DOT_DOC_FILES instead of
*.doc, so that rebuilding it works.
Greg J. Badros [Wed, 15 Mar 2000 16:13:40 +0000 (16:13 +0000)]
*** empty log message ***
Greg J. Badros [Wed, 15 Mar 2000 16:12:40 +0000 (16:12 +0000)]
* libguile.h: Include libguile/validate.h. Thanks Keisuke Nishida!
Greg J. Badros [Wed, 15 Mar 2000 16:09:58 +0000 (16:09 +0000)]
* guile-snarf.awk.in: Replace docstring line-ending \n" and \n\n"
with nothing and \n, respectively. Thanks Keisuke Nishida for
noticing this problem.
Mikael Djurfeldt [Wed, 15 Mar 2000 15:19:50 +0000 (15:19 +0000)]
Removed some stupid code.
Mikael Djurfeldt [Wed, 15 Mar 2000 07:31:15 +0000 (07:31 +0000)]
*** empty log message ***
Mikael Djurfeldt [Wed, 15 Mar 2000 07:30:53 +0000 (07:30 +0000)]
* gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
allocating heap. The basic idea is to trigger GC every Nth
allocated cell and grow heap when free list runs out. The scheme
has been extended so that GC isn't triggered until all remaining
cells are used. The implementation is also prepared for
development in the direction of POSIX threads.
* gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
SCM_EXPHEAP should return half of the heap size.
Mikael Djurfeldt [Wed, 15 Mar 2000 07:30:39 +0000 (07:30 +0000)]
* __scm.h (GUILE_NEW_GC_SCHEME): Define this if you want to test a
new way of allocating heap. It makes Guile fast, but still
contains bugs.
Mikael Djurfeldt [Tue, 14 Mar 2000 22:15:24 +0000 (22:15 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 22:15:12 +0000 (22:15 +0000)]
The following change to init.c is only enabled if Guile was
configured with --enable-guile-debug.
* init.c (scm_i_getenv_int): New function.
(scm_boot_guile_1): Use the environment variables
GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
they exist. (This may be replaced by a Scheme level mechanism in
the future.)
Mikael Djurfeldt [Tue, 14 Mar 2000 18:03:27 +0000 (18:03 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 17:24:57 +0000 (17:24 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 17:24:48 +0000 (17:24 +0000)]
* objprop.c (s_scm_set_object_property_x): Use scm_assq instead of
scm_assoc. (Thanks to Dirk Herrmann.)
Mikael Djurfeldt [Tue, 14 Mar 2000 17:19:45 +0000 (17:19 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 16:41:17 +0000 (16:41 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 16:41:03 +0000 (16:41 +0000)]
* eval.c, lang.c, lang.h (scm_lisp_nil, scm_lisp_t): Renamed from
scm_nil, scm_t. (Thanks to Dirk Herrmann.)
Mikael Djurfeldt [Tue, 14 Mar 2000 15:12:23 +0000 (15:12 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 15:12:12 +0000 (15:12 +0000)]
* init.c (scm_boot_guile_1): Use same initial segment size for
1-word and 2-word segments. Having the smaller size causes Guile
to GC too often. Obviously something needs to be done to allow
for a smaller 2-word segment without this to happen. (The amount
of heap for each type should be automatically adapted to the
application somehow.)
Mikael Djurfeldt [Tue, 14 Mar 2000 12:36:05 +0000 (12:36 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 09:03:56 +0000 (09:03 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 09:03:32 +0000 (09:03 +0000)]
* pairs.h (SCM_NEWCELL, SCM_NEWCELL2): Use new style freelists.
Mikael Djurfeldt [Tue, 14 Mar 2000 09:03:20 +0000 (09:03 +0000)]
* init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells).
Mikael Djurfeldt [Tue, 14 Mar 2000 09:03:08 +0000 (09:03 +0000)]
* gc.h (scm_freelist_t): New type.
Mikael Djurfeldt [Tue, 14 Mar 2000 09:02:51 +0000 (09:02 +0000)]
* gc.c (SCM_INIT_HEAP_SIZE): Changed from 32768 --> 40000 so that
all of Guile basics fits into one segment and there suitable room
for work.
(SCM_EXPHEAP): Now takes an argument. Grow by a factor of 1.5
instead of 2.
(scm_freelist, scm_freelist2): Now of type scm_freelist_t.
Freelists now contains information about object span, cells
collected and amount of cells in heap segments belonging to the
list.
(scm_heap_size, scm_gc_cells_collected): Removed.
Mikael Djurfeldt [Tue, 14 Mar 2000 07:06:21 +0000 (07:06 +0000)]
*** empty log message ***
Mikael Djurfeldt [Tue, 14 Mar 2000 06:43:57 +0000 (06:43 +0000)]
*** empty log message ***