+2000-05-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.h (SCM_INUM0): Uses SCM_MAKINUM instead of SCM_PACK.
+
+ * dynl.c (dynl_obj, DYNL_OBJ, get_dynl_obj): Removed.
+
+ (DYNL_FILENAME, DYNL_HANDLE): Use SCM_CELL... macros instead of
+ pointer trickery.
+
+ (SET_DYNL_HANDLE): Added.
+
+ (scm_dynamic_object_p): Simplified.
+
+ (scm_dynamic_unlink, scm_dynamic_func): Changed comment. Deliver
+ better error message when accessing unlinked dynamic objects.
+ Eliminated call to get_dynl_obj.
+
+2000-05-03 Marius Vollmer <mvo@zagadka.ping.de>
+
+ * scmsigs.c (orig_handlers) [HAVE_SIGACTION]: Fix declaration to
+ be an array of function pointers instead of being a pointer to an
+ array returning function. Thanks to Kalle Olavi Niemitalo!
+
+2000-05-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_divbigbig, scm_divbigint), numbers.h
+ (scm_divbigbig, scm_divbigint): Don't return zero any more to
+ indicate that a division has a remainder, return SCM_UNDEFINED
+ instead. It is improbable that anyone actually used these
+ functions outside of numbers.c. For this reason and due to the
+ change in behaviour the functions are static now. Thus, if
+ surprisingly there are users of these functions they will at least
+ get alarmed.
+
+ * numbers.c: Removed #ifdef SCM_BIGDIG #endif in those functions,
+ that already have a clean dispatch order. Note: SCM_BIGDIG is
+ always defined.
+
+ * numbers.c (scm_inexact_p): Simplified.
+
+ * numbers.c (scm_num_eq_p, scm_less_p, scm_max, scm_min,
+ scm_product, scm_num2dbl, scm_angle): Reordered dispatch
+ sequence, thereby fixing some comparisons of SCM values with
+ integer constants.
+
+ * numbers.c (scm_divide): Division by zero of inums leads to an
+ error now. (Formerly, an infinite number was returned.)
+
+ Respect the fact, that scm_divbigbig does now return SCM_UNDEFINED
+ if a division has a remainder.
+
+2000-05-02 Gary Houston <ghouston@arglist.com>
+
+ * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney).
+
+2000-05-02 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_logtest, scm_division): Reordered dispatch
+ sequence, thereby fixing some comparisons of SCM values with
+ integer constants.
+
+ * numbers.h (scm_makdbl): Mark as deprecated at the point of
+ declaration.
+
+ * eval.c (SCM_CEVAL, SCM_APPLY), gh_data.c (gh_double2scm,
+ gh_doubles2scm), numbers.c (scm_istr2flo, scm_max, scm_min,
+ scm_sum, scm_difference, scm_product, scm_divide, scm_sys_expt,
+ scm_sys_atan2, scm_make_rectangular, scm_make_polar,
+ scm_real_part, scm_imag_part, scm_magnitude, scm_angle,
+ scm_long2num, scm_long_long2num, scm_ulong2num), ramap.c
+ (ramap_rp, scm_array_map_x), random.c (scm_random,
+ scm_random_uniform, scm_random_normal_vector_x, scm_random_exp),
+ struct.c (scm_struct_ref), unif.c (scm_array_to_list): Replace
+ call to scm_makdbl with a call to scm_make_real or
+ scm_make_complex, depending on whether the imaginary part is known
+ to be zero.
+
+2000-05-01 Gary Houston <ghouston@arglist.com>
+
+ * scmsigs.c: fix the definition of orig_handlers for the case
+ that HAVE_SIGACTION is not defined (thanks to
+ Kalle Olavi Niemitalo).
+
+ * Makefile.am: remove include_HEADERS (was libguile.h)
+ libguile.h: moved to top level directory.
+
+2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (SCM_SWAP): Moved to the top of the file to allow for
+ a wider use.
+
+ * numbers.c (scm_modulo, scm_gcd, scm_lcm, scm_logand, scm_logior,
+ scm_logxor): Reordered dispatch sequence, thereby fixing some
+ comparisons of SCM values with integer constants.
+
+ * number.c (scm_logtest): Removed some redundant SCM_{N}?IMP
+ tests.
+
+2000-04-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_quotient, scm_remainder): Removed code that was
+ conditionally compiled based on BADIVSGNS. BADIVSGNS does not
+ occur anywhere else throughout guile.
+
+ * numbers.c (scm_quotient): Fixed parameter number in error
+ message.
+
+ * numbers.c (scm_remainder): Reordered dispatch sequence.
+
+2000-04-25 Gary Houston <ghouston@arglist.com>
+
+ * posix.c (scm_execlp): docstring fix (thanks to Martin
+ Grabmueller).
+
+2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (undef_object): Made into a local static variable
+ (suggested by Jost Boekemeier).
+
+2000-04-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * pairs.c (cxrs, scm_init_pairs): Simplify initialization of
+ c[ad]+r functions.
+
+ * procs.c (scm_init_iprocs), procs.h (scm_subr, scm_iproc,
+ scm_dsubr, scm_init_iprocs): Removed.
+
+ * procs.h (SCM_SUBRF, SCM_DSUBRF): Access the cell words
+ directly instead of casting a cell to a C struct.
+
+2000-04-22 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ Better modularization of GC extensions through new C level GC
+ hooks:
+
+ * weaks.c (scm_weaks_prehistory): New function: Add
+ scm_weak_vector_gc_init to scm_before_mark_c_hook; Add
+ scm_mark_weak_vector_spines to scm_before_sweep_c_hook.
+ (scm_scan_weak_vectors): New function; added to
+ scm_after_sweep_c_hook.
+
+ * weaks.h (scm_weak_vectors, scm_weaks_prehistory): Added
+ declarations.
+
+ * guardians.h (scm_guardian_gc_init, scm_guardian_zombify): Are
+ now static.
+
+ * guardians.c (scm_guardian_gc_init): Turned into a hook function
+ and added to scm_before_mark_c_hook.
+ (scm_guardian_zombify): Turned into a hook function and added to
+ scm_before_sweep_c_hook.
+
+ * async.c (scm_sys_gc_async_thunk): Run after-gc-hook.
+ Added #include "libguile/gc.h".
+
+ * gc.h: Added #include "libguile/hooks.h".
+
+ * gc.c: Removed #include "libguile/guardians.h".
+ (scm_before_gc_c_hook, scm_before_mark_c_hook,
+ scm_before_sweep_c_hook, scm_after_sweep_c_hook,
+ scm_after_gc_c_hook): New C level hooks.
+ (scm_after_gc_hook): New Scheme level hook.
+ (scm_gc_sweep): Moved scanning of weak vectors to weaks.c.
+ (scm_igc): Moved initialization of scm_weak_vectors and the call
+ to scm_guardian_gc_init to respective module.
+ (scm_mark_weak_vector_spines): Moved to weaks.c;
+ Call to scm_guardian_zombify moved to guardians.c;
+ Run scm_before_gc_c_hook, scm_before_sweep_c_hook,
+ scm_after_gc_c_hook at appropriate places.
+ (scm_init_gc): Initialize scm_after_gc_hook.
+
+ * hooks.c, hooks.h (scm_make_hook_with_name): Removed deprecated
+ function.
+
+ * init.c (scm_boot_guile_1): Added `scm_init_hooks'.
+
+ * Makefile.am: Added hooks.c, hooks.h, hooks.x.
+
+ * feature.c, feature.h: Broke out hook code into separate files.
+
+ * hooks.c, hooks.h: New files.
+
+ * *.*: Change includes so that they always use the "prefixes"
+ libguile/, qt/, guile-readline/, or libltdl/.
+ (Thanks to Tim Mooney.)
+
+ * Makefile.am (INCLUDES): Removed THREAD_CPPFLAGS and INCLTDL.
+ (DEFS): Added. automake adds -I options to DEFS, and we don't
+ want that.
+ Removed all -I options except for the root source directory and
+ the root build directory.
+
+ * numbers.c (scm_odd_p, scm_even_p): Use SCM_WRONG_TYPE_ARG
+ instead of SCM_ASSERT (0, ...). (Some compilers will complain
+ about control reaching end of function otherwise, and, besides,
+ the new code is not less clear.)
+
+ * gc.c (scm_must_malloc, scm_must_realloc, scm_must_free): Added
+ calls to malloc debugging functions.
+
+ * init.c (scm_boot_guile_1): Added calls to debug-malloc init
+ functions.
+
+ * Makefile.am: Added debug-malloc.c, debug-malloc.h,
+ debug-malloc.x.
+
+ * debug-malloc.c, debug-malloc.h: New files.
+
+2000-04-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_exact_p, scm_odd_p, scm_even_p): Added
+ documentation strings.
+
+ * numbers.c (scm_exact_p, scm_odd_p, scm_even_p, scm_abs,
+ scm_quotient): Reordered dispatch sequence to first handle
+ immediates, second handle bignums and finally handle generic
+ functions respectively signal wrong type arguments. Hopefully
+ this will allow for easier separation when goops is integrated.
+
+2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (which_seg): Use SCM2PTR to convert a non immediate SCM
+ variable into a pointer to a heap cell.
+
+ * gc.c (scm_mark_locations, scm_cellp, init_heap_seg,
+ scm_unhash_name): Remove redundant cast to SCM_CELLPTR.
+
+2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * print.c (scm_iprin1): Don't assign zero to SCM values, use
+ SCM_UNDEFINED instead.
+
+ * weaks.c (scm_make_weak_vector): Fix assignment of zero to a
+ vector element. (Still to be improved)
+
+2000-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (undef_cell): Removed, replaced by:
+
+ (undef_object): Added to replace undef_cell.
+
+ (scm_lookupcar, scm_lookupcar1): Use undef_object.
+
+ * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
+ scm_m_atbind, CHECK_EQVISH, SCM_CEVAL), procs.h (SCM_SETCODE):
+ Don't perform arithmetic operations with SCM values.
+
+ * eval.c (scm_lookupcar, scm_lookupcar1, scm_m_atfop,
+ scm_m_atbind, scm_eval_args, scm_deval_args, SCM_CEVAL): Use
+ symbolic names for the tc3 type codes.
+
+ * eval.c (scm_m_define, SCM_CEVAL, SCM_APPLY): Remove redundant
+ cast to SCM.
+
+ * eval.c (scm_eval_args, scm_deval_args, SCM_CEVAL): Made the
+ access of the struct vcell element explicit.
+
+2000-04-19 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * struct.c (scm_struct_free_light, scm_struct_free_standard,
+ scm_struct_free_entity): Use `scm_must_free' instead of `free'.
+
+ * procs.c (scm_make_subr_opt): Tell scm_must_realloc that we're
+ realloc:ing scm_subr_table ("what" instead of "who").
+
+ * numbers.c (scm_adjbig): Ditto.
+
+2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * unif.c (l2ra): Don't eliminate the call to scm_array_set_x
+ itself, as was done in the previous 'patch'. (Thanks to Radey
+ Shouman)
+
+2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * options.c (scm_options), read.c (recsexpr): Remove redundant
+ SCM_IMP test.
+
+ * print.c (scm_iprin1): Made the access of the struct vcell
+ element explicit.
+
+ * print.h (SCM_PRINT_CLOSURE): Added call to SCM_PACK.
+
+ * ramap.c (scm_ra_eqp, ra_compare), unif.c
+ (scm_uniform_vector_ref, scm_cvref, rapr1): Separated accesses to
+ unsigned long and signed long arrays and clarified the way the
+ access is performed.
+
+ * ramap.c (scm_array_map_x, raeql), read.c (scm_lreadr), stacks.c
+ (narrow_stack), unif.c (scm_cvref, scm_uniform_array_read_x,
+ scm_raprin1): Use SCM_EQ_P to compare SCM values.
+
+ * strings.c (scm_makstr): Treat the msymbol slots as a field of
+ scm_bits_t values.
+
+ * struct.h (SCM_SET_VTABLE_DESTRUCTOR): Treat the struct data as
+ a field of scm_bits_t values.
+
+ * unif.c (l2ra): Don't test result of scm_array_set_x against
+ zero: It is always SCM_UNSPECIFIED.
+
+2000-04-18 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * script.c (scm_compile_shell_switches): Also enable
+ record-positions when given the --debug option. (Thanks to Diego
+ Dainese.)
+
+2000-04-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * print.c (ENTER_NESTED_DATA, print_circref, scm_iprlist):
+ Compare SCM's with SCM_EQ_P.
+
+ * print.c (scm_make_print_state), srcprop.c
+ (scm_source_properties): Use valid scheme object to initialize
+ SCM variable.
+
+ * print.c (scm_iprin1): Remove redundant calls to SCM_UNPACK.
+
+2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * struct.c (scm_alloc_struct, scm_struct_free_0,
+ scm_struct_free_light, scm_struct_free_standard,
+ scm_struct_free_entity, scm_make_struct, scm_make_vtable_vtable),
+ struct.h (scm_struct_free_t, scm_alloc_struct, scm_struct_free_0,
+ scm_struct_free_light, scm_struct_free_standard,
+ scm_struct_free_entity): Struct data regions (and thus also
+ vtable data regions) are now C arrays of scm_bits_t elements.
+
+ * gc.c (scm_gc_mark, scm_gc_sweep, scm_unhash_name): Made the
+ mixup of glocs and structs explicit.
+
+ * gc.c (scm_unprotect_object): Compare SCM's with SCM_EQ_P.
+
+2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (scm_unmemocar): Use macros to test for gloc cell.
+ Minimize scope of variable 'ir'.
+
+ * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
+ Added missing call to SCM_UNPACK.
+
+2000-04-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
+ SCM_VALIDATE_NUMBER_COPY): New macros.
+
+2000-04-16 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * script.c (scm_compile_shell_switches): Added --debug option.
+
+2000-04-16 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as
+ specified by R5RS).
+
+2000-04-15 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * ports.h (SCM_INPUT_PORT_P, SCM_OUTPUT_PORT_P): New macros.
+ (SCM_INPORTP, SCM_OUTPORTP): Marked as deprecated.
+
+ * validate.h (SCM_VALIDATE_INPUT_PORT, SCM_VALIDATE_OUTPUT_PORT):
+ New macros.
+ Cleanup of code layout.
+
+ * ports.c, ports.h (close-input-port, close-output-port): New R5RS
+ procedures.
+
+2000-04-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * continuations.c (scm_make_cont, scm_dynthrow): Completely
+ separated implementations for defined (CHEAP_CONTINUATIONS) and
+ !defined (CHEAP_CONTINUATIONS). Also, now using memcpy for stack
+ copying.
+
+ * continuations.c (grow_stack): Renamed from grow_throw.
+
+ * continuations.c (copy_stack_and_call): New static function.
+
+ * continuations.c (scm_dynthrow): Simplified and made static.
+
+ * continuations.h (scm_dynthrow): Made static.
+
+2000-04-13 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * unif.c, unif.h (shared-array-root, shared-array-offset,
+ shared-array-increments): New primitives.
+
+2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (scm_gc_sweep): Simplify the computation of freed memory
+ size for msymbols.
+
+ * symbols.h (SCM_SLOTS, SCM_SYMBOL_FUNC, SCM_SYMBOL_PROPS,
+ SCM_SYMBOL_HASH): The msymbol slots are now a field of scm_bits_t
+ values.
+
+ * symbols.h (SCM_SET_SYMBOL_FUNC, SCM_SET_SYMBOL_PROPS): New
+ macros.
+
+ symbols.c (scm_intern_obarray_soft, msymbolize, scm_symbol_fset_x,
+ scm_symbol_pset_x): Use them.
+
+ * symbols.c (scm_symbol_hash): Unpack to access SCM raw data.
+
+2000-04-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * ports.c (scm_port_print): The port data is read as raw data.
+
+ * ports.h (SCM_TC2PTOBNUM, SCM_PTOBNUM): Fix SCM/scm_bits_t
+ mismatch.
+
+2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (SCM_CEVAL), objects.c (scm_mcache_lookup_cmethod,
+ scm_make_subclass_object), objects.h (SCM_CLASS_FLAGS,
+ SCM_ENTITY_PROCEDURE, SCM_ENTITY_SETTER), struct.c
+ (scm_struct_init, scm_struct_vtable_p, scm_make_struct,
+ scm_struct_ref, scm_struct_set_x), struct.h (SCM_STRUCT_DATA):
+ The struct data is now an array of scm_bits_t variables.
+
+ * objects.h (SCM_SET_ENTITY_PROCEDURE): New macro.
+
+ objects.c (scm_set_object_procedure_x): Use it.
+
+ * struct.c (scm_struct_init): Unused variable 'data' removed.
+
+ (scm_struct_vtable_p): Redundant SCM_IMP tests removed.
+
+2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * objects.h (SCM_OBJ_CLASS_FLAGS, SCM_OBJ_CLASS_REDEF), struct.h
+ (SCM_STRUCT_VTABLE_DATA, SCM_STRUCT_LAYOUT, SCM_STRUCT_VTABLE,
+ SCM_STRUCT_PRINTER): The struct vtable data is now an array of
+ scm_bits_t variables.
+
+ * struct.h (SCM_SET_STRUCT_LAYOUT): New macro.
+
+ struct.c (scm_make_vtable_vtable): Use it.
+
+2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * symbols.c (scm_sym2vcell, scm_sym2ovcell_soft, scm_sym2ovcell,
+ scm_intern_obarray_soft, scm_sysintern0,
+ scm_string_to_obarray_symbol, scm_intern_symbol,
+ scm_unintern_symbol, scm_symbol_binding, scm_symbol_interned_p,
+ scm_symbol_bound_p, scm_symbol_set_x): Don't use C operators to
+ compare SCM values.
+
+2000-04-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_quotient, scm_modulo): Reordered to handle the
+ case of immediate numbers parameters first. Also, only use
+ decoded numbers for numerical comparison.
+
+2000-04-10 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * objects.h: Don't redeclare scm_call_generic_0 and
+ scm_apply_generic. (Thanks to Tal Tversky.)
+
+2000-04-10 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * hash.c (scm_hasher): Use symbolic names for the tc3 constants.
+ Unpack SCM value to use it as a switch parameter. Don't cast SCM
+ values to int values.
+
+2000-04-10 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * coop.c (mother): Handled EINTR (the wait has been interrupted by
+ a signal).
+
+2000-04-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * __scm.h (SCM_WTA_DISPATCH_[012n]): To test whether a SCM value
+ contains a raw zero value it has to be unpacked.
+
+ * debug.c (with_traps_inner, scm_with_traps): Passing SCM values
+ via void * requires unpacking / packing.
+
+ * stacks.h (SCM_STACKP): Remove unnecessary SCM_NIMP test and use
+ SCM_EQ_P to compare SCM values.
+
+ * stacks.h (SCM_FRAME_VOID_P, SCM_FRAME_REAL_P, SCM_FRAME_PROC_P,
+ SCM_FRAME_EVAL_ARGS_P, SCM_FRAME_OVERFLOW_P): Remove unnecessary
+ call to SCM_UNPACK.
+
+ * tags.h (SCM_NECONSP): Define in terms of SCM_ECONSP
+
+ * tags.h (SCM_ECONSP): Clarify the test for glocs. This is still
+ quite ugly.
+
+2000-04-05 Michael Livshin <mlivshin@bigfoot.com>
+
+ * async.[ch]: unexpose low-level async access macros (thanks to
+ Dirk Herrmann).
+
+ * validate.h: move async validation macros to async.c (nobody else
+ needs them anyway), and rename them.
+
+2000-04-04 Michael Livshin <mlivshin@bigfoot.com>
+
+ * async.h: kill the scm_async_t struct. having a heap cell
+ pretending to be a C struct is not helthy, and is not needed here
+ anyway, as asyncs happily fit in one heap cell.
+
+ * async.c: reflect the fact that asyncs are now represented by
+ single heap cell each.
+
+2000-04-04 Gary Houston <ghouston@arglist.com>
+
+ * error.c (scm_syserror): save errno before doing anything else,
+ since it's used in two expressions and may get mutated (thanks to
+ Dirk Herrmann).
+
+2000-04-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * debug.c (scm_procedure_source, scm_procedure_environment),
+ gsubr.c (scm_make_gsubr_with_generic, scm_gsubr_apply), procs.c
+ (scm_procedure, scm_setter): Return valid scheme value as dummy.
+
+ * filesys.c (scm_readdir, scm_rewinddir, scm_closedir,
+ scm_dir_print, scm_dir_free), numbers.h (SCM_COMPLEX_REAL,
+ SCM_COMPLEX_IMAG), regex-posix.h (SCM_RGX), throw.c (JBJMPBUF,
+ SETJBJMPBUF, JBJMPBUF, SETJBJMPBUF, freejb, print_lazy_catch,
+ scm_ithrow), unif.c (scm_uniform_vector_ref, scm_cvref,
+ scm_array_set_x, rapr1), unif.h (SCM_ARRAY_V, SCM_ARRAY_BASE),
+ vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS, SCM_SETVELTS): Use
+ SCM_{SET_}?CELL_WORD* to access cell entries with raw data.
+
+ * filesys.c (scm_closedir), numbers.c (scm_addbig), numbers.h
+ (SCM_SETNUMDIGS), throw.c (JBACTIVE, SCM_JBDFRAME,
+ SCM_SETJBDFRAME): Read and modify data bits in cell entry #0 using
+ SCM_{SET_}?CELL_WORD_0.
+
+ * filesys.c (fill_select_type, retrieve_select_type, scm_select),
+ numbers.c (scm_gcd, scm_lcm, scm_integer_expt, scm_zero_p,
+ scm_product, scm_divide), posix.c (scm_getgrgid), ramap.c
+ (scm_array_fill_int, racp), throw.c (scm_catch, scm_lazy_catch,
+ scm_ithrow), unif.c (scm_make_uve, scm_array_p,
+ scm_transpose_array, scm_array_set_x, scm_bit_set_star_x,
+ scm_bit_count_star, l2ra), variable.c (prin_var,
+ scm_make_variable, scm_make_undefined_variable,
+ scm_builtin_variable), vectors.c (scm_vector_set_length_x),
+ vports.c (sf_flush, sf_close): Don't use C operators to compare
+ SCM values.
+
+ * numbers.c (scm_odd_p, scm_even_p), variable.c (prin_var): Must
+ unpack SCM values to access their raw contents.
+
+ * numbers.c (big2str): Eliminate unnecessary casts to SCM.
+
+ * numbers.h (SCM_NEWREAL), regex-posix.h (SCM_RGXP), vports.c
+ (scm_make_soft_port): Use SCM_{SET_}?CELL_TYPE to access the cell
+ type information.
+
+ * throw.c (printjb): Eliminated unnecessary unpack.
+
+ * variable.c (make_vcell_variable): Smob data is of type
+ scm_bits_t.
+
+2000-04-04 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * print.c: Removed promise to rewrite printer code before next
+ release. :)
+
+2000-04-03 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * iselect.c (add_fd_sets): Insert empty statement after label.
+ (Thanks to Tim Mooney.)
+
+2000-04-03 Michael Livshin <mlivshin@bigfoot.com>
+
+ * guardians.c (scm_guardian_zombify): mark all zombies in a
+ separate loop after processing all the currently known live
+ guardians, so as to not introduce order dependencies (thanks to
+ Gary Houston). note that the order problems are still there if
+ some guardians are themselves zombies, but that's a sick case that
+ I'm not going to worry about.
+ also, make another outer loop to process zombified
+ guardians (which are uncovered while marking zombies).
+
+2000-04-03 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * evalext.c (scm_definedp, scm_m_undefine), gc.c
+ (scm_mark_weak_vector_spines, scm_gc_sweep), hashtab.c
+ (scm_hashq_ref, scm_hashv_ref, scm_hash_ref, scm_hashx_ref),
+ keywords.c (scm_make_keyword_from_dash_symbol), lang.c
+ (scm_nil_eq), lang.h (SCM_NILP, SCM_NIL2EOL), load.c
+ (scm_primitive_load), modules.c (scm_module_full_name), objects.c
+ (scm_class_of, scm_mcache_lookup_cmethod, scm_make_class_object),
+ ports.c (scm_close_all_ports_except), ports.h (SCM_EOF_OBJECT_P),
+ print.c (scm_iprin1, scm_prin1, scm_iprlist, scm_simple_format),
+ print.h (SCM_PRINT_STATE_P), procprop.c (scm_i_procedure_arity,
+ scm_stand_in_scm_proc, scm_procedure_property,
+ scm_set_procedure_property_x), procs.c
+ (scm_procedure_documentation), read.c (scm_lreadr, scm_lreadparen,
+ scm_lreadrecparen, scm_read_hash_extend), script.c
+ (scm_compile_shell_switches), srcprop.c (scm_source_property,
+ scm_set_source_property_x), srcprop.h (SCM_WHASHFOUNDP), stacks.c
+ (read_frame, NEXT_FRAME, read_frames, narrow_stack,
+ scm_make_stack, scm_stack_id), strop.c (scm_i_index,
+ scm_string_index, scm_string_rindex), struct.c (scm_struct_init),
+ validate.h (SCM_VALIDATE_BOOL_COPY, SCM_VALIDATE_INUM_DEF,
+ SCM_VALIDATE_INUM_DEF_COPY, SCM_VALIDATE_PROC,
+ SCM_VALIDATE_ARRAY): Don't use C operators to compare SCM values.
+
+ * feature.c (make_hook), keywords.c
+ (scm_make_keyword_from_dash_symbol), macros.c (scm_makacro,
+ scm_makmacro, scm_makmmacro), print.c (scm_iprin1,
+ scm_printer_apply, scm_port_with_print_state): Smob data is of type
+ scm_bits_t.
+
+ * feature.c (print_hook), gc.c (scm_object_address), hash.c
+ (scm_ihashq, scm_ihashv), print.c (scm_iprin1, scm_ipruk), smob.c
+ (freeprint), struct.c (scm_print_struct): Must unpack
+ SCM values to access their raw contents.
+
+ * fluids.c (apply_thunk, scm_with_fluids), hashtab.c (fold_proc,
+ scm_hash_fold), load.c (load, scm_primitive_load): Passing SCM
+ values via void * requires unpacking / packing.
+
+ * fports.c (scm_fport_buffer_add, scm_setvbuf), procs.h
+ (SCM_SUBRNUM, SCM_SET_SUBRNUM), srcprop.h (SRCPROPBRK, SRCBRKP):
+ Read and modify data bits in cell entry #0 using
+ SCM_{SET_}?CELL_WORD_0.
+
+ * fports.c (scm_fdes_to_port), gc.c (scm_gc_for_newcell,
+ scm_gc_sweep, init_heap_seg), init.c (start_stack), ports.c
+ (scm_void_port), procs.c (scm_make_subr_opt,
+ scm_make_procedure_with_setter), root.c (scm_internal_cwdr),
+ smob.c (scm_make_smob), strports.c (scm_mkstrport): Use
+ SCM_SET_CELL_TYPE to write the cell type information.
+
+ * gc.c (scm_gc_mark): Use SCM_CELL_OBJECT* to access SCM values
+ from cells that are no scheme pairs.
+
+ * gc.c (scm_gc_sweep), mallocs.c (prinmalloc), mallocs.h
+ (SCM_MALLOCDATA, SCM_SETMALLOCDATA), print.c (scm_ipruk), random.h
+ (SCM_RSTATE), root.h (SCM_ROOT_STATE), smob.c (scm_smob_free),
+ srcprop.c (freesrcprops), srcprop.h (SRCPROPPOS, SRCPROPFNAME,
+ SRCPROPCOPY, SRCPROPPLIST), struct.c (scm_make_struct,
+ scm_make_vtable_vtable): Use SCM_{SET_}?CELL_WORD* to access cell
+ entries with raw data.
+
+ * gc.c (scm_init_storage), sort.c (applyless), strop.c
+ (scm_string_to_list): Eliminate unnecessary casts to SCM.
+
+ * mallocs.c (scm_malloc_obj): Store result of malloc as raw
+ data.
+
+ * ports.c (scm_close_all_ports_except): Duplicate documentation
+ text removed.
+
+ * print.c (scm_iprin1): Use SCM_ITAG3.
+
+ * procs.h (SCM_SET_SUBRNUM): Fix shift direction.
+
+ * snarf.h (SCM_GPROC, SCM_GPROC1, SCM_SYMBOL, SCM_GLOBAL_SYMBOL,
+ SCM_KEYWORD, SCM_GLOBAL_KEYWORD, SCM_VCELL, SCM_GLOBAL_VCELL,
+ SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Don't initialize globals
+ and static variables at their point of declaration, but rather in
+ the init function.
+
+ * tags.h (SCM_PACK): Automatically cast to scm_bits_t.
+
+2000-04-02 Gary Houston <ghouston@arglist.com>
+
+ * guardians.c (TCONC_IN, scm_make_guardian): set the CDR of the
+ empty tconc pair to SCM_EOL instead of SCM_BOOL_F, avoiding the
+ use of an improper list (which breaks g_print. g_print isn't
+ used).
+ guardians.c: Added more comments and modified the make-guardian
+ docstring. Reordered a few procedures.
+
+2000-04-01 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (scm_lookupcar1, scm_lookupcar, scm_m_case, scm_m_cond,
+ scm_m_lambda, iqq, scm_m_define, scm_m_expand_body, unmemocopy,
+ SCM_CEVAL), procs.h (SCM_TOP_LEVEL): Don't use C operators to
+ compare SCM values.
+
+ (scm_makprom): Smob data is of type scm_bits_t.
+
+2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * backtrace.c (display_error_body), debug.c (scm_procedure_source,
+ scm_reverse_lookup), dynl.c (scm_dynamic_link): Don't use C
+ operators to compare SCM values.
+
+ * debug.c (scm_make_debugobj), debug.h (SCM_DEBUGOBJ_FRAME,
+ SCM_SET_DEBUGOBJ_FRAME): Update SCM_{SET_}?DEBUGOBJ_FRAME to
+ access raw cell data with SCM_{SET_}?CELL_WORD_1.
+
+ * debug.c (scm_make_debugobj): Don't use SCM_SETCAR to set types.
+
+ * debug.c (scm_make_memoized), dynl.c (scm_dynamic_link): Smob
+ data is of type scm_bits_t.
+
+2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gdbint.c (gdb_maybe_valid_type_p), guardians.c (TCONC_EMPTYP,
+ scm_guardian_zombify): Use SCM_EQ_P to compare SCM values.
+
+ * guardians.c (GUARDIAN): Use SCM_CELL_WORD_1 for raw data.
+
+2000-03-31 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * ports.h (scm_port): Change type of stream member to scm_bits_t.
+
+ * gdbint.c (unmark_port, remark_port), ports.c (scm_markstream),
+ strports.c (st_resize_port, scm_mkstrport), vports (sf_flush,
+ sf_write, sf_fill_input, sf_close, scm_make_soft_port): Since
+ streams are now of type scm_bits_t, SCM streams have to be
+ unpacked/packed.
+
+ * ports.h (SCM_SETPTAB_ENTRY, SCM_SETSTREAM): Cast input to
+ scm_bits_t.
+
+2000-03-31 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * coop-defs.h (struct coop_t): Added `sto'-field again because of
+ binary compatibility---let's remove it next time we alter some
+ major structure.
+
+ * coop.c (coop_quitting_p, coop_cond_create, coop_mutex_create,
+ coop_mother, coop_child): New variables.
+ (mother): New function.
+ (coop_create): New thread spawning mechanism which uses a "mother
+ thread". The "dummy" pthreads aren't healthy enough to give birth
+ to new threads since Linux threads thinks they are asleep.
+
+ * coop-defs.h (struct coop_t): Removed dummy_mutex.
+
+ * coop-defs.h, coop-threads.c (struct coop_t): Eliminate
+ `sto'-field when GUILE_PTHREAD_COMPAT is enabled.
+
+2000-03-30 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * arbiters.c (scm_make_arbiter), async.c (scm_async), dynwind.c
+ (scm_internal_dynamic_wind): Smob data is always of type
+ scm_bits_t.
+
+ * arbiters.c (SCM_ARB_LOCKED, SCM_LOCK_ARB, SCM_UNLOCK_ARB):
+ Access the locking information in cell entry 0 with
+ SCM_{SET_}?CELL_WORD_0 instead of SCM_*CAR.
+
+ * async.c (scm_run_asyncs): Use SCM_NULLP to test for the empty
+ list.
+
+ * dynwind.c (scm_dowinds): Use SCM_EQ_P to compare SCM values.
+
+ * ports.h (SCM_PTAB_ENTRY, SCM_SETPTAB_ENTRY): Access the ptab
+ entry data using SCM_{SET_}?CELL_WORD_1 instead of SCM_{SET}?CDR.
+
+2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * alist.c (scm_sloppy_assq, scm_assq), eq.c (scm_eq_p, scm_eqv_p,
+ scm_equal_p), list.c (scm_ilength, scm_last_pair, scm_reverse,
+ scm_sloppy_memq, scm_delq_x, scm_delq1_x), tags.h (SCM_UNBNDP):
+ Don't use C operators == and != to compare SCM values, use
+ SCM_EQ_P instead.
+
+ * boolean.c (scm_boolean_p): Use SCM_BOOLP to determine whether a
+ SCM value is equal to #t or #f.
+
+ * eq.c (scm_eqv_p, scm_equal_p): Don't use SCM_CAR to access the
+ cell type entry of non immediate objects of unknown type. Use
+ SCM_CELL_TYPE instead.
+
+ * gh_data.c (gh_scm2bool, gh_module_lookup), list.c
+ (scm_sloppy_memv, scm_sloppy_member, scm_delv_x, scm_delete_x,
+ scm_delv1_x, scm_delete1_x), scmsigs.c (scm_sigaction): Use
+ SCM_FALSEP and SCM_TRUE_P to compare SCM values against #f and
+ #t.
+
+ * list.c (scm_listify): Use SCM_UNBNDP to test for an unbound
+ scheme value.
+
+2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread,
+ scm_make_mutex, scm_make_condition_variable): Cast data to
+ scm_bits_t in SCM_SET_CELL_WORD and SCM_NEWSMOB macros.
+
+ * coop.c (coop_create): Set `specific' field, not `data' to NULL.
+
+2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * smob.h (SCM_NEWSMOB, SCM_NEWSMOB2, SCM_NEWSMOB3, SCM_SMOB_DATA,
+ SCM_SET_SMOB_DATA, SCM_TC2SMOBNUM, SCM_SMOBNUM): To access smob
+ data, use SCM_{SET_}?CELL_TYPE or SCM_{SET_}?WORD_[1-3].
+
+ Note that this implies that smob data has always to be passed as
+ values of type scm_bits_t.
+
+2000-03-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * threads.c (scm_init_threads): Pass 0 size to scm_make_smob_type
+ for scm_tc16_thread. As the current COOP threads are written, GC
+ is not supposed to manage storage for threads.
+
+ * error.c (scm_error): Don't try to throw an error if
+ scm_gc_heap_lock is true.
+
+ * coop.c (coop_finish): New function. Called at exit.
+ (coop_aborthelp): Free thread structures when threads die.
+ Finished LinuxThreads compatibility support => COOP threads now
+ mesh with LinuxThreads.
+
+ * coop-threads.c (scm_call_with_new_thread, scm_spawn_thread):
+ Changed SETCDR --> SET_CELL_WORD_1.
+
+ * coop-threads.c (scheme_launch_thread): Set word 1 of handle to 0
+ when thread dies.
+
+2000-03-29 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * boolean.h (SCM_TRUE_P): New macro.
+
+ * boolean.h (SCM_FALSEP, SCM_NFALSEP, SCM_BOOLP), pairs.h
+ (SCM_NULLP, SCM_NNULLP): Use SCM_EQ_P to compare SCM values.
+
+2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * continuations.h (SCM_CONTREGS, SCM_SET_CONTREGS): New macros to
+ access continuation data.
+
+ (SCM_SETJMPBUF): Deprecated. Use SCM_SET_CONTREGS instead.
+
+ (SCM_JMPBUF, SCM_DYNENV, SCM_THROW_VALUE, SCM_BASE, SCM_SEQ,
+ SCM_DFRAME): Use SCM_CONTREGS instead of SCM_CHARS to access
+ continuation data.
+
+ * continuations.c (scm_make_cont), init.c (start_stack),
+ root.c (scm_internal_cwdr): Use SCM_SET_CONTREGS instead of
+ SCM_SETJMPBUF.
+
+2000-03-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * symbols.h (SCM_LENGTH, SCM_SETLENGTH): Access the length field
+ of strings and symbols by using SCM_{SET_}?CELL_WORD_0.
+
+ (SCM_CHARS, SCM_UCHARS, SCM_SETCHARS): Use SCM_{SET_}?CELL_WORD_1
+ to access the char * field of strings and symbols.
+
+2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.h (SCM_NEWCELL, SCM_NEWCELL2): Use SCM_SET_CELL_TYPE to set
+ the type entry of a new cell. Added a comment about things to
+ remember when updating the list of free cells.
+
+ (SCM_FREEP, SCM_MARKEDP): Use SCM_CELL_TYPE to access the type
+ entry of a cell.
+
+2000-03-27 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * pairs.h (SCM_CAR, SCM_CDR, SCM_SETCAR, SCM_SETCDR): Use
+ SCM_CELL_OBJECT and SCM_SET_CELL_OBJECT. This change implies that
+ with strict type checking enabled these macros will only work if
+ given valid SCM parameters.
+
+ (SCM_GCCDR): Moved to tags.h.
+
+ * tags.h (SCM_GCCDR): Moved here from pairs.h.
+
+2000-03-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * tags.h (SCM2PTR, PTR2SCM): Moved to gc.h.
+
+ * pairs.h (scm_cell, SCM_CELLPTR, SCM_CELL_WORD*, SCM_CELL_OBJECT*,
+ SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*, SCM_CELL_TYPE,
+ SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK, SCM_PTR_GT,
+ SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC, SCM_NEWCELL,
+ SCM_NEWCELL2): Moved to gc.h.
+
+ (SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR, SCM_SETAND_CDR,
+ SCM_SETOR_CAR, SCM_SETOR_CDR): Moved to gc.h. These names should
+ be changed, though, since the macros are not only pair related.
+
+ (SCMPTR): Deleted.
+
+ * gc.h (SCM2PTR, PTR2SCM, scm_cell, SCM_CELLPTR, SCM_CELL_WORD*,
+ SCM_CELL_OBJECT*, SCM_SET_CELL_WORD*, SCM_SET_CELL_OBJECT*,
+ SCM_CELL_TYPE, SCM_SET_CELL_TYPE, SCM_PTR_LT, SCM_PTR_MASK,
+ SCM_PTR_GT, SCM_PTR_LE, SCM_PTR_GE, SCM_CELL_WORD_LOC,
+ SCM_NEWCELL, SCM_NEWCELL2, SCM_CARLOC, SCM_CDRLOC, SCM_SETAND_CAR,
+ SCM_SETAND_CDR, SCM_SETOR_CAR, SCM_SETOR_CDR): Moved here from
+ tags.h and pairs.h.
+
+2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * tags.h (SCM_STRICT_TYPING): New macro that, if defined,
+ activates strict compile time type checking for variables of
+ type SCM.
+ (SCM, SCM_PACK, SCM_UNPACK): Define according to whether
+ SCM_STRICT_TYPING or SCM_VOIDP_TEST are defined.
+ (SCM_EQ_P): Defined as a macro equivalent for eq?.
+
+2000-03-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * tags.h (SCM_POINTERS_MUNGED): Removed.
+
+ * gc.c (scm_gc_sweep, init_heap_seg): Removed use of
+ SCM_POINTERS_MUNGED, thus fixing some illegal casts to SCM.
+
+2000-03-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * pairs.h (SCM_CELL_OBJECT, SCM_CELL_OBJECT_[0-3],
+ SCM_SET_CELL_OBJECT, SCM_SET_CELL_OBJECT_[0-3], SCM_CELL_TYPE,
+ SCM_SET_CELL_TYPE): Added a set of low level macros for accessing
+ cell entries.
+ (SCM_CELL_WORD_[0-3]): Renamed from the SCM_CELL_WORD[0-3].
+
+ * procs.h, procs.c: Instead of SCM_{SET_}?CELL_WORD[12], use the
+ newly introduced SCM_{SET_}?CELL_OBJECT_[12] macros.
+
+2000-03-23 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * tags.h: Disabled definition of SCM_VOIDP_TEST.
+
+ Defining SCM as void * introduces problems which haven't been
+ handled yet. Developers who work with these issues can enable it
+ in their working copies.
+
+ Disabling this definition exposes a set of newly introduced and
+ older misuses of types which causes warning messages during
+ compilation. We'll fix this successively.
+
+ * gc.c (scm_mark_locations): Changed * (SCM **) X --> * (SCM *) X
+ in order to obtain a value of type SCM.
+ (scm_cellp): Updated with new changes to scm_mark_locations.
+
+ * continuations.h (SCM_SETJMPBUF): Cast second arg into SCM.
+
+ * continuations.c (scm_make_cont): Removed cast of size_t into
+ long.
+
+ * symbols.h (SCM_SETCHARS): Cast second arg into SCM.
+
+2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.h (SCM_SETNUMDIGS): Use SCM_BIGSIZEFIELD macro for
+ shifting, not constant. Thanks to Dale P. Smith.
+
+ * numbers.c (scm_sum, scm_difference): Don't test a SCM value
+ for being less than zero. Decode it to a C value first. Again,
+ thank you Dale.
+
+2000-03-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.h, ramap.c, struct.h, vectors.h: Don't use SCM2PTR for
+ non scheme values. If raw data is stored in SCM variables, it has
+ to be accessed using SCM_UNPACK until a better solution is found.
+
+2000-03-22 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * tags.h (SCM_ECONSP, SCM_NECONSP): More corrections of
+ pointer-arithmetic induced by the SCM_PACK/UNPACK change.
+
+ * print.c (scm_iprin1): SCM_PACK/UNPACK corrections.
+
+ * gc.c (scm_gc_sweep): SCM_PACK/UNPACK corrections.
+
+ * eval.c (SCM_CEVAL, scm_unmemocar): SCM_PACK/UNPACK corrections.
+
+ * dynwind.c (scm_swap_bindings): SCM_PACK/UNPACK corrections.
+
+ * 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.
+
+2000-03-21 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
+
+ * 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.
+
+2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers.
+
+2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * symbols.h, symbols.c (scm_strhash): Declare the string
+ parameter as constant, since it is not modified.
+
+ * symbols.c (scm_intern_obarray_soft,
+ scm_sysintern0_no_module_lookup): Can now pass constant strings
+ to scm_strhash without need for casting.
+
+2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM
+ values to pointers. Use SCM2PTR instead.
+
+2000-03-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack
+ results of SCM_INUM.
+
+2000-03-21 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
+
+ * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
+ GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
+ GUILE_MIN_YIELD_X now take *positive* fractions of heap size.
+
+ * 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 (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.
+ (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.
+
+2000-03-20 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.h (SCM_MAKINUM): The parameter to SCM_MAKINUM should
+ already be a C value. No need to unpack it.
+
+ * numbers.c (scm_long_long2num): Cast the parameter to scm_bits_t
+ if we know it fits into an inum.
+
+ * ramap.c (ramap_rp): An scm_tc7_[ui]vect object does point to a
+ field of long values. In contrast, SCM_VELTS accesses a field of
+ SCM values.
+
2000-03-20 Mikael Djurfeldt <mdj@mdj.nada.kth.se>
* 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.
+ (gc_sweep_freelist_finish): Inserted explanation of use of
+ gc_trigger.
* print.h, stacks.h, options.c, options.h: Changed C++
commentaries to C.
2000-03-18 Michael Livshin <mlivshin@bigfoot.com>
- * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros.
+ * tags.h: (SCM_DOUBLE_CELLP, SCM_NDOUBLE_CELLP): new macros (bad
+ names, anyone got any better ones?)
* gc.h: (typedef struct scm_freelist_t) remove from here.
- * gc.c: (CELL_UP, CELL_DN) make these macros take additional
+ * gc.c: (CELL_UP, CELL_DN) made 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
+ (typedef struct scm_freelist_t) moved 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).
+ double-cell, check that it's properly aligned.
+ (init_heap_seg) align double-cells properly, work with the
+ assumption that the segment size divides cleanly by cluster size.
(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.