+2001-02-10 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * dump.c (scm_store_bytes): Store data size before data.
+ (scm_restore_bytes): Restore data size. Takes a pointer to size.
+ * dump.h (scm_restore_bytes): Updated.
+
+2001-02-09 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * dump.c: Use double cells for update schedule.
+
+2001-02-08 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * ports.c (scm_unread_char): Take an optional argument.
+
+2001-02-08 Marius Vollmer <marius.vollmer@uni-dortmund.de>
+
+ * modules.h (scm_selected_module, scm_current_module): Renamed
+ scm_selected_module to scm_current_module to synchronize Scheme
+ and C names.
+ (scm_select_module, scm_set_current_module): Likewise. Changed
+ all uses.
+
+ * ports.c (scm_port_for_each): Make a snapshot of the port table
+ before iterating over it. The table might change while the user
+ code is running. With the snapshot, the user can depend on the
+ fact that each port that existed at the start of the iteration is
+ encountered exactly once. (ice-9 popen) depends on this.
+
+2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * strings.h (SCM_STRING_MAX_LENGTH): New macro.
+
+ * strings.c (scm_makstr, scm_take_str, scm_make_string): Added
+ range checking for the size parameter. Thanks to Martin
+ Grabmueller for the hint.
+
+ (scm_makstr): Reordered string initialization to make interrupt
+ deferring unnecessary.
+
+ * vectors.c (scm_make_vector): Fixed range checking.
+
+2001-02-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * vectors.h (SCM_VECTOR_MAX_LENGTH): New macro.
+
+ * vectors.c (scm_make_vector, scm_c_make_vector): Improved the
+ checking of the size parameter for type correctness and valid
+ range. Thanks to Rob Browning for reporting the problem. Instead
+ of deferring interrupts, scm_remember_upto_here_1 is used.
+
+2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * dump.c (scm_store_cell_object, scm_restore_cell_object): Removed.
+ (scm_dump_cell_update): Removed.
+ (scm_dump_update): Renamed from scm_dump_object_update.
+ (scm_restore_string, scm_restore_bytes, scm_restore_word): Takes
+ a pointer instead of returning a value.
+ * keywords.c (keyword_undump): Updated.
+
+2001-02-05 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * dump.c, dump.h: Modified a lot.
+ (SCM_DUMP_COOKIE): Version 0.1
+ (scm_dump_mark): Removed.
+ (scm_restore_cell_object, scm_store_cell_object): New functions.
+
+ * smob.h (scm_smob_descriptor): Removed slots: dump_mark,
+ dump_dealloc, dump_store, undump_alloc, undump_restore, undump_init.
+ New slots: dump, undump.
+ * smob.c (scm_make_smob_type, scm_set_smob_dump, scm_set_smob_undump):
+ Updated.
+
+ * keywords.c (keyword_dump): Renamed from keyword_dealloc.
+ (keyword_undump): Renamed from keyword_alloc.
+ (scm_init_keywords): Set keyword_dump and keyword_undump.
+
+2001-02-03 Michael Livshin <mlivshin@bigfoot.com>
+
+ * gc.c (DOUBLECELL_ALIGNED_P): new macro, a better-named analog of
+ the deprecated SCM_DOUBLE_CELLP.
+
+ * tags.h (SCM_DOUBLE_CELLP): deprecated.
+
+2001-02-02 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * dump.c, dump.h: New files.
+ * Makefile.am: Added dump.c, dump.h, dump.x, dump.doc.
+ * init.c: #include "libguile/dump.h".
+ (scm_init_guile_1): Call scm_init_dump.
+ * smob.h (scm_smob_descriptor): New slots: dump_mark,
+ dump_dealloc, dump_store, undump_alloc, undump_restore,
+ undump_init.
+ * smob.c (scm_make_smob_type): Init the new slots.
+ (scm_set_smob_dump, scm_set_smob_undump): New functions.
+ * smob.h (scm_set_smob_dump, scm_set_smob_undump): Declared.
+
+ * keywords.c: #include "libguile/dump.h".
+ (keyword_dealloc, keyword_alloc): New functions.
+ (scm_init_keywords): Set smob_dump and smob_undump.
+
+2001-02-01 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * vectors.c (scm_c_make_vector): New function.
+ * vectors.h (scm_c_make_vector): Declared.
+ * eval.c (scm_copy_tree), filesys.c (scm_stat2scm), fluids.c
+ (scm_make_initial_fluids, grow_fluids), gc.c (scm_init_storage),
+ gh_data.c (gh_ints2scm, gh_doubles2scm): goops.c
+ (scm_make_method_cache, scm_i_vector2list,
+ scm_compute_applicable_methods, scm_sys_method_more_specific_p),
+ init.c (start_stack), net_db.c (scm_gethost, scm_getnet,
+ scm_getproto, scm_return_entry), posix.c (scm_getgroups,
+ scm_getpwuid, scm_getgrgid, scm_uname), print.c (make_print_state,
+ grow_ref_stack), regex-posix.c (scm_regexp_exec), scmsigs.c
+ (scm_init_scmsigs), socket.c (scm_addr_vector, scm_addr_vector),
+ stime.c (scm_times, filltime), unif.c (scm_make_uve), vectors.c
+ (scm_vector, scm_make_vector): Use scm_c_make_vector.
+
+ * hashtab.c (scm_c_make_hash_table): New function.
+ * hashtab.h (scm_c_make_hash_table): Declared.
+ * environments.c (scm_make_leaf_environment,
+ scm_make_eval_environment), gc.c (scm_init_storage),
+ keywords.c (scm_init_keywords), symbols.c (scm_builtin_bindings):
+ Use scm_c_make_hash_table.
+
+2001-01-31 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
+
+ * unif.c (rapr1): Don't apply scm_uniform_vector_length on arrays.
+
+2001-01-29 Martin Grabmueller <mgrabmue@cs.tu-berlin.de>
+
+ * struct.c (scm_make_vtable_vtable): Removed unnecessary "" from
+ end of docstring.
+
+ * struct.c (scm_struct_set_x, scm_struct_vtable_tag,
+ scm_struct_vtable_name, scm_set_struct_vtable_name_x), weaks.c
+ (scm_make_weak_value_hash_table, scm_make_doubly_weak_hash_table,
+ scm_weak_value_hash_table_p, scm_doubly_weak_hash_table_p),
+ srcprop.c (scm_source_properties, scm_set_source_properties_x,
+ scm_source_property, scm_set_source_property_x), sort.c
+ (scm_sort_list_x, scm_restricted_vector_sort_x, scm_sorted_p,
+ scm_merge, scm_merge_x, scm_sort_x, scm_sort, scm_stable_sort_x,
+ scm_stable_sort, scm_sort_list_x, scm_sort_list): Added
+ docstrings.
+
+2001-01-29 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
+
+ * eval.c (SCM_APPLY): Check that primitives which take 1 arg
+ really get that arg.
+
+2001-01-26 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * goops.c (s_scm_get_keyword): Bug fix.
+
+2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ The following patch was sent by Martin Grabmueller. It makes sure
+ that in case of parameter errors the correct function name is
+ shown, and that parameter types are only checked once.
+
+ * strop.c (string_copy, string_upcase_x, string_downcase_x,
+ string_capitalize_x): New functions. Each one performs the core
+ functionality of the corresponding scm_* function.
+
+ (scm_string_copy, scm_string_upcase_x, scm_string_upcase,
+ scm_string_downcase_x, scm_string_downcase,
+ scm_string_capitalize_x, scm_string_capitalize): Reduced to
+ parameter checking wrappers of the above functions.
+
+2001-01-26 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * continuations.c, dynl.c, keywords.c, load.c: Include
+ strings.h. Thanks to Bill Schottstaedt for the bug report.
+
+2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * backtrace.c (display_header): Make sure that line and column
+ information is shown independent of whether the port the code was
+ read from had an associated filename. Thanks to Martin
+ Grabmueller for providing this patch.
+
+2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * fports.[ch] (scm_file_port_p): New primitive.
+
+2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * tags.h (scm_tc16_fport, scm_tc16_strport, scm_tc16_sfport):
+ These are now defined in fports.c, strports.c and vports.c.
+
+ * fports.[ch] (scm_tc16_fport), strports.c (scm_tc16_strport),
+ vports.c (scm_tc16_sfport): Made variables (were macros defined in
+ tags.h).
+
+ fports.c (scm_make_fptob), strports.c (scm_make_stptob), vports.c
+ (scm_make_sfptob): Made static. These return a type code now.
+
+ fports.c (scm_init_fports), strports.c (scm_init_strports),
+ vports.c (scm_init_vports): Create the corresponding port types.
+
+ * fports.h (SCM_FPORTP, SCM_OPFPORTP, SCM_OPINFPORTP,
+ SCM_OPOUTFPORTP): Redefined in terms of scm_tc16_fport.
+
+ * init.c (scm_init_guile_1): Make sure strports are initialized
+ before gdbint.
+
+ * ports.[ch] (scm_make_port_type): Changed the return type to
+ scm_bits_t.
+
+ * ports.c (scm_ports_prehistory): Don't create any port types
+ here.
+
+ * posix.c (scm_ttyname): Use SCM_FPORTP instead of comparing
+ against scm_tc16_fport directly.
+
+2001-01-25 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * srcprop.c (scm_set_source_property_x): Fix to handle
+ (set-source-property! <obj> 'copy <datum>) correctly.
+
+2001-01-24 Gary Houston <ghouston@arglist.com>
+
+ * filesys.c (scm_link): docstring fix.
+ * fports.h (scm_setfileno): obsolete declaration removed.
+ * posix.c: bogus popen declaration removed.
+
+ * rdelim.c: new file, split from ioext.c.
+ * rdelim.h: new file, split from ioext.h
+ * Makefile.am: add rdelim.c and related files.
+ * init.c: call scm_init_rdelim. include rdelim.h.
+
+2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ This patch was sent by Martin Grabmueller and makes sure that
+ parameter errors are reported correctly by the lexicographic
+ ordering predicates.
+
+ * strorder.c (string_less_p, string_ci_less_p): New functions.
+
+ (scm_string_less_p, scm_string_ci_less_p): Extracted the core
+ functionality into string_less_p, string_ci_less_p respectively.
+ The remaining code is just a wrapper to do the parameter
+ checking.
+
+ (scm_string_leq_p, scm_string_gr_p, scm_string_geq_p): Check the
+ parameters and call string_less_p instead of scm_string_less_p.
+
+ (scm_string_ci_leq_p, scm_string_ci_gr_p, scm_string_ci_geq_p):
+ Check the parameters and call string_less_ci_p instead of
+ scm_string_ci_less_p.
+
+2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ This patch modifies scm_display_error to perform parameter
+ checking. Thanks to Neil Jerram for the bug report.
+
+ * backtrace.[ch] (scm_i_display_error): New function.
+
+ * backtrace.c (scm_display_error): Added parameter check and
+ extracted the core functionality into function
+ scm_i_display_error.
+
+ * throw.c (handler_message): Call scm_i_display_error to display
+ the error message.
+
+2001-01-23 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
+
+ * eval.c (SCM_APPLY): Added # args check for application of
+ procedures with arity 3. (Thanks to Anders Holst.)
+
+2001-01-24 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * filesys.h (SCM_DIR_FLAG_OPEN, SCM_DIR_OPEN_P): Added.
+
+ (SCM_OPDIRP): Deprecated.
+
+ * filesys.c (scm_opendir): Use SCM_DIR_FLAG_OPEN instead of
+ SCM_OPN.
+
+ (scm_readdir, scm_rewinddir): Don't use SCM_VALIDATE_OPDIR.
+ Instead, give an explicit error message in case the directory is
+ closed.
+
+ (scm_closedir, scm_dir_print): Rewritten to use SCM_DIR_OPEN_P
+ instead of SCM_OPENP and SCM_CLOSEDP.
+
+ * validate.h (SCM_VALIDATE_OPDIR): Deprecated.
+
+2001-01-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (inner_eval, scm_eval): Move all real functionality into
+ inner_eval. Avoid to copy the expression twice by inlining some
+ code from scm_i_eval.
+
+2001-01-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (scm_m_case): The 'else' clause of a 'case' statement
+ now has to be the last clause, as required by R5RS. Thanks to
+ Martin Grabmueller for the patch.
+
+2001-01-18 Gary Houston <ghouston@arglist.com>
+
+ * ioext.c: further simplify scm_read_string_x_partial by defining
+ a macro SCM_EBLOCK.
+
+2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gh_data.c (gh_ints2scm): Simplified using SCM_FIXABLE.
+
+2001-01-18 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * __scm.h: Added comment about architecture and compiler
+ properties that are required by guile.
+
+ (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
+ SCM_MOST_NEGATIVE_FIXNUM): Moved to numbers.h.
+
+ (SCM_CHAR_BIT, SCM_LONG_BIT): Moved here from numbers.h.
+
+ * numbers.h (SCM_CHAR_BIT, SCM_LONG_BIT): Moved to __scm.h.
+
+ (SCM_FIXNUM_BIT, SCM_MOST_POSITIVE_FIXNUM,
+ SCM_MOST_NEGATIVE_FIXNUM): Moved here from __scm.h.
+
+2001-01-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * __scm.h (SCM_FIXNUM_BIT): Added. The name is chosen in analogy
+ to the names in limits.h.
+
+ * numbers.c (abs_most_negative_fixnum): Added.
+
+ (scm_quotient, scm_remainder): Fixed the fixnum-min / (abs
+ fixnum-min) special case.
+
+ (scm_big_and): Fix for negative first parameter.
+
+ (scm_bit_extract): Fix for fixnum paramters.
+ Thanks to Rob Browning for the bug report.
+
+ (scm_init_numbers): Initialize abs_most_negative_fixnum.
+
+2001-01-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * symbols.c (scm_symbol_bound_p): Fixed comment.
+ Thanks to Chris Cramer.
+
+2001-01-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * smob.[ch] (scm_make_smob_type): Return type is scm_bits_t now.
+ Thanks to Bill Schottstaedt.
+
+2001-01-11 Michael Livshin <mlivshin@bigfoot.com>
+
+ from Matthias Köppe:
+
+ * objects.h (SCM_SET_ENTITY_SETTER): new macro. SCM_ENTITY_SETTER
+ casts its result, so doesn't yield an lvalue per ANSI C.
+
+ * goops.c (s_scm_sys_set_object_setter_x): use
+ SCM_SET_ENTITY_SETTER.
+ (clear_method_cache): use SCM_SET_ENTITY_PROCEDURE.
+
+ * gc.h (SCM_GC_SET_CARD_BVEC): new macro. SCM_GC_CARD_BVEC casts
+ its result, so doesn't yield an lvalue per ANSI C.
+ (SCM_GC_SET_CARD_FLAGS): ditto for SCM_GC_GET_CARD_FLAGS.
+ (SCM_GC_CLR_CARD_FLAGS): redefined in terms of
+ SCM_GC_SET_CARD_FLAGS.
+ (SCM_GC_SET_CARD_FLAG, SCM_GC_CLR_CARD_FLAGS): ditto.
+
+ * gc.c (INIT_CARD): use the explicit setter macro to set the bvec.
+
+2001-01-08 Gary Houston <ghouston@arglist.com>
+
+ * validate.h (SCM_VALIDATE_SUBSTRING_SPEC_COPY): new macro.
+ * ioext.c (scm_read_string_x_partial, scm_read_delimited_x),
+ socket.c (scm_recvfrom): use the new macro, plus minor docstring
+ changes.
+ * ioext.c (scm_read_string_x_partial): don't crash if -1 is supplied
+ for fdes. if current input port is used, check that it's a file
+ port.
+
+2001-01-06 Gary Houston <ghouston@arglist.com>
+
+ * ioext.c (scm_read_string_x_partial): new procedure, implements
+ read-string!/partial.
+ * ports.c (scm_take_from_input_buffers): new procedure used by
+ scm_read_string_x_partial.
+ (scm_drain_input): use scm_take_from_input_buffers.
+
+2001-01-06 Marius Vollmer <mvo@zagadka.ping.de>
+
+ * validate.h (SCM_VALIDATE_NUMBER): New.
+
+2001-01-03 Michael Livshin <mlivshin@bigfoot.com>
+
+ * guardians.c (F_GREEDY, F_LISTED, F_DESTROYED, GREEDY_P,
+ SET_GREEDY, LISTED_P, SET_LISTED, CLR_LISTED, DESTROYED_P,
+ SET_DESTROYED): new defines/macros.
+ (GUARDIAN_LIVE, GUARDIAN_ZOMBIES, GUARDIAN_NEXT): deleted.
+ (add_to_live_list): takes a `guardian_t *' now, not SCM.
+ (guardian_print): print more info.
+ (guardian_apply): check if the guardian is destroyed, and throw an
+ error if so. take one more optional argument `throw_p'.
+ (scm_guard): depending on the value of `throw_p', return a boolean
+ result.
+ (scm_get_one_zombie): remove redundant property test.
+ (guardian_t): represent the various (currently 3, I hope nothing
+ more gets added) boolean fields as bit flags.
+ (scm_guardian_destroyed_p, scm_guardian_greedy_p): new predicates.
+ (scm_destroy_guardian_x): new procedure.
+
+ * guardians.h: added prototypes for `scm_guardian_greedy_p' and
+ `scm_guardian_destroyed_p'. changed prototype for `scm_guard'.
+
+2001-01-01 Gary Houston <ghouston@arglist.com>
+
+ * fports.c (fport_write): bugfix: handle short writes for
+ unbuffered ports too. optimize the buffered case by minimizing
+ the number of write/flush calls.
+ (write_all): new helper procedure.
+
+2000-12-30 Michael Livshin <mlivshin@bigfoot.com>
+
+ * guardians.c (guardian_print): for sharing guardians, print that
+ they are sharing.
+ (scm_guard, scm_get_one_zombie): place the critical section
+ barriers more correctly.
+
+ * weaks.c (scm_scan_weak_vectors): move the calculation of the
+ `weak_keys' and `weak_values' flags out of the inner loop.
+
+2000-12-29 Michael Livshin <mlivshin@bigfoot.com>
+
+ * guardians.c: (greedily_guarded_prop): deleted.
+ (greedily_guarded_whash): new variable. a doubly-weak hash table
+ used to keep the "greedily guarded" object property. the previous
+ implementation (via primitive object properties) was incorrect due
+ to its only-the-key-is-weak semantics.
+ (scm_guard, get_one_zombie, scm_init_guardians): use/init
+ `greedily_guarded_whash'.
+
+2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (check_map_args), gh_data.c (gh_set_substr,
+ gh_scm2newstr, gh_get_substr, gh_symbol2newstr), print.c
+ (scm_iprin1): Use scm_remember_upto_here_1 instead of
+ scm_remember.
+
+ * gc.[ch] (scm_remember_upto_here_1, scm_remember_upto_here_2,
+ scm_remember_upto_here): New functions.
+
+ (scm_remember): Deprecated.
+
+2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * continuations.c (scm_make_continuation): Make variable cont
+ volatile to let the compiler know that it won't be clobbered by
+ longjmp. (It wouldn't be anyway, but for some reason the compiler
+ is not able to see that.)
+
+2000-12-28 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ This patch re-introduces the unused member "properties" of
+ struct scm_subr_entry as requested by Mikael Djurfeldt.
+
+ * procs.h (scm_subr_entry): Re-introduced member "properties".
+
+ (SCM_SUBR_PROPS): Un-deprecated.
+
+ * procs.c (scm_make_subr_opt, scm_mark_subr_table): Struct
+ scm_subr_entry has a member "properties" again.
+
+2000-12-28 Michael Livshin <mlivshin@bigfoot.com>
+
+ * guardians.c (mark_dependencies_in_tconc): new function.
+ (mark_dependencies): bug fix. mark the dependencies of the known
+ zombies, too. duh.
+
+2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
+
+ * gc.c: (scm_gc_mark_dependencies): use SCM_EQ_P for SCMs, not
+ '=='. also, return after calling `scm_gc_mark'.
+
+2000-12-24 Michael Livshin <mlivshin@bigfoot.com>
+
+ * gc.c: (scm_gc_mark_dependencies): new function. like
+ `scm_gc_mark', but doesn't mark the argument itself. defined
+ using an arrangement similar to that in eval.c: `scm_gc_mark' and
+ `scm_gc_mark_dependencies' are derived from the same "template"
+ by ugly preprocessor magic.
+
+ * gc.h: added prototype for `scm_gc_mark_dependencies'.
+
+ * init.c (scm_init_guile_1): call the renamed
+ `scm_init_guardians'.
+
+ * guardians.h: changed prototypes for `scm_make_guardian' and
+ `scm_init_guardians'.
+
+ * guardians.c (guardian_t): added new fields `greedy_p' and
+ `listed_p'.
+ (GUARDIAN_P): predicate that says whether its argument is a
+ guardian.
+ (GUARDIAN_GREEDY_P, GUARDIAN_LISTED_P): new predicates.
+ (greedy_guardians, sharing_guardians): new variables. hold the
+ greedy and sharing live guardian lists, respectively.
+ (first_live_guardian, current_link_field): removed.
+ (greedily_guarded_prop): new variable. holds the "is greedily
+ guarded" object property.
+ (self_centered_zombies): new variable. stores guarded objects
+ that are parts of cycles.
+ (add_to_live_list): new function, introduced to decouple marking a
+ guardian and adding it to the live list.
+ (guardian_mark): call `add_to_live_list'.
+ (guardian_print): print whether the guardian is greedy or not.
+ also change "live" and "zombie" to "reachable" and "unreachable"
+ respectively, to be less confusing.
+ (scm_guard): if the guardian is greedy, test whether the object is
+ already greedily marked. throw an error if so.
+ (scm_get_one_zombie): if the guardian is greedy, remove the
+ "greedily guarded" property from the object.
+ (scm_make_guardian): add a new optional boolean argument which
+ says whether the guardian is greedy or sharing.
+ (guardian_gc_init): init the new live lists.
+ (mark_dependencies): new function.
+ (mark_and_zombify): new function.
+ (guardian_zombify): reworked to support the new guardian
+ semantics. move some logic to `mark_dependencies' and
+ `mark_and_zombify'.
+ (whine_about_self_centered_zombies): new function. installed in
+ the `after-gc-hook' to complain about guarded objects which are
+ parts of cycles.
+ (scm_init_guardians): init the new stuff. renamed from
+ `scm_init_guardian'.
+
+2000-12-23 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * procs.h (scm_subr_entry): Removed unused struct member
+ "properties".
+
+ (SCM_SUBR_PROPS): Deprecated.
+
+ * procs.c (scm_make_subr_opt, scm_mark_subr_table): Struct
+ scm_subr_entry does not have a member "properties" any more.
+
+2000-12-22 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * procs.h (scm_subr_entry): Removed unused struct member
+ "documentation".
+
+ (SCM_SUBR_DOC): Deprecated.
+
+ * procs.c (scm_make_subr_opt): Eliminate use of scm_intern0 in
+ favor of scm_str2symbol. Similarly, prefer scm_sysintern over
+ scm_sysintern0.
+
+ (scm_make_subr_opt, scm_mark_subr_table): Struct scm_subr_entry
+ does not have a member "documentation" any more.
+
+2000-12-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (restore_environment): Make sure that changes to the
+ current environment will take effect when re-entering the dynamic
+ scope.
+
+2000-12-21 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * goops.h (SCM_PUREGENERICP): Include the SCM_STRUCTP test.
+
+ * goops.c (scm_sys_invalidate_method_cache_x, scm_m_atdispatch,
+ scm_pure_generic_p): The SCM_STRUCTP test is implied.
+
+2000-12-20 Gary Houston <ghouston@arglist.com>
+
+ * continuations.c (continuation_apply): subtract the length of
+ continuation->dynenv, not the dynenv itself. I broke it last
+ time I changed this file. thanks to Bernard Urban.
+
+2000-12-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * goops.c (remove_duplicate_slots, maplist,
+ scm_sys_initialize_object, scm_sys_prep_layout_x,
+ scm_sys_inherit_magic_x, scm_instance_p,
+ scm_sys_set_object_setter_x, scm_sys_invalidate_method_cache_x,
+ scm_compute_applicable_methods, scm_m_atdispatch,
+ scm_pure_generic_p): Remove redundant SCM_N?IMP tests.
+
+2000-12-16 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * validate.h (SCM_WRONG_NUM_ARGS): New macro.
+ * goops.h: #include "libguile/validate.h"
+ (SCM_CLASSP, SCM_GENERICP, SCM_METHODP): Moved from goops.c with
+ prefix "SCM_".
+ (SCM_VALIDATE_INSTANCE, SCM_VALIDATE_ACCESSOR, SCM_VALIDATE_CLASS,
+ SCM_VALIDATE_GENERIC, SCM_VALIDATE_METHOD): New macros.
+ * goops.c (CLASSP, GENERICP, METHODP): Moved to goops.h with
+ prefix "SCM_".
+ (scm_sys_compute_slots, scm_sys_initialize_object,
+ scm_sys_prep_layout_x, s_sys_inherit_magic_x, scm_instance_p,
+ scm_class_name, scm_class_direct_supers, scm_class_direct_slots,
+ scm_class_direct_subclasses, scm_class_direct_methods,
+ scm_class_precedence_list, scm_class_slots, scm_class_environment,
+ scm_generic_function_name, scm_generic_function_methods,
+ scm_method_generic_function, scm_method_specializers,
+ scm_method_procedure, scm_accessor_method_slot_definition,
+ scm_make_unbound, scm_unbound_p, scm_assert_bound,
+ scm_at_assert_bound_ref, scm_sys_fast_slot_ref,
+ scm_sys_fast_slot_set_x, scm_slot_ref_using_class,
+ scm_slot_set_using_class_x, scm_slot_bound_using_class_p,
+ scm_slot_exists_using_class_p, scm_slot_ref, scm_slot_set_x,
+ scm_slot_bound_p, scm_slots_exists_p, scm_sys_allocate_instance,
+ scm_sys_set_object_setter_x, scm_sys_modify_instance,
+ scm_sys_modify_class, scm_sys_invalidate_class,
+ scm_sys_invalidate_method_cache_x, scm_generic_capability_p,
+ scm_enable_primitive_generic_x, scm_primitive_generic_generic,
+ scm_make, scm_find_method, scm_sys_method_more_specific_p,
+ scm_pure_generic_p, scm_sys_goops_loaded): Replaced SCM_PROC by
+ SCM_DEFINE. Use validate macros defined above.
+ (scm_assert_bound, scm_at_assert_bound_ref, scm_sys_goops_loaded):
+ Declared as static functions.
+ (s_class_of, scm_class_of): Replaced SCM_PROC by SCM_DEFINE
+ in object.c.
+ * object.c (scm_class_of): Use SCM_DEFINE.
+
+2000-12-16 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * symbols.h (scm_symbols_prehistory): Added prototype.
+
+2000-12-16 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * environments.[ch] (scm_system_environment): New variable, will
+ replace scm_symhash soon. We may decide for a better name and
+ also to split this up into a set of environments later.
+
+ (scm_environments_prehistory): Initialize scm_system_environment.
+
+ * init.c (scm_init_guile_1): scm_environments_prehistory requires
+ storage to be initialized.
+
+2000-12-15 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (change_environment, inner_eval, restore_environment):
+ New functions.
+
+ (scm_eval): Bring the global variable that holds the current
+ environment up to date when entering or leaving the scope of the
+ evaluated code. Thanks to Matthias Koeppe for the bug report.
+
+2000-12-13 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * numbers.c (scm_init_numbers): Re-introduced bindings for
+ most-positive-fixnum and most-negative-fixnum as requested by
+ Mikael Djurfeldt.
+
+2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ The variable scm_symbols is made static within symbols.c and
+ renamed to symbols. The initialization of the symbols hash table
+ is done in function scm_symbols_prehistory.
+
+ * gc.c (scm_init_storage): Don't initialize scm_symbols. Don't
+ define most-positive-fixnum, most-negative-fixnum and
+ bignum-radix.
+
+ * init.c (scm_init_guile_1): Call scm_symbols_prehistory.
+
+ * root.h (scm_symbols): Not in scm_sys_protects any more.
+
+ * symbols.c (symbols): Renamed from scm_symbols and made static.
+
+ (scm_mem2symbol): scm_symbols is renamed to symbols.
+
+ * symbols.[ch] (scm_symbols_prehistory): Added.
+
+2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (scm_init_storage), root.h (scm_weak_symhash, scm_symbols):
+ Removed the former scm_weak_symhash hash table. Added scm_symbols
+ hash table.
+
+ * stacks.c (get_applybody): scm_sym2vcell may return #f.
+
+ * symbols.c (scm_mem2symbol): This function is now responsible
+ for creating symbol objects and storing them in the global
+ scm_symbols hash table.
+
+ (scm_str2symbol): Rewritten in terms of scm_mem2symbol.
+
+ (scm_sym2vcell): For system bindings, there is now only one
+ obarray - scm_symhash. If scm_sym2vcell is called to look up a
+ symbol that can't be found and shall not be created, #f is
+ returned. Most callers of scm_sym2vcell have expected this
+ behaviour anyway.
+
+ (scm_intern_obarray_soft): Removed reference to scm_weak_symhash
+ from comment.
+
+ (scm_intern_obarray_soft, scm_sysintern0_no_module_lookup): These
+ functions are not responsible for symbol creation any more, only
+ for creation of bindings.
+
+ (scm_symbol_value0): Don't use scm_intern_obarray_soft to create
+ a symbol object.
+
+ (scm_symbol_interned_p): scm_weak_symhash is removed.
+
+ * symbols.[ch] (scm_builtin_weak_bindings): Removed. There are
+ no weak bindings any more.
+
+2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * hooks.c (scm_create_hook), script.c
+ (scm_compile_shell_switches), snarf.h (SCM_VCELL,
+ SCM_GLOBAL_VCELL, SCM_VCELL_INIT, SCM_GLOBAL_VCELL_INIT): Create
+ a binding in one go (instead of first creating a vcell and then
+ setting its cdr).
+
+2000-12-12 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * hash.[ch] (scm_string_hash), symbols.[ch] (scm_string_hash):
+ Moved function scm_string_hash to hash.c.
+
+2000-12-11 Marius Vollmer <mvo@zagadka.ping.de>
+
+ * gc_os_dep.c (scm_get_stack_base) [MSWIN32]: Added detection of
+ page size on the w32 architecture. Updated from Boehms gc5.2.
+ Thanks to Lars J. Aas!
+
+2000-12-11 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * debug.c (scm_sym_procname, scm_sym_dots, scm_sym_source,
+ scm_init_debug), eval.c (scm_sym_dot, scm_sym_arrow, scm_sym_else,
+ scm_sym_unquote, scm_sym_uq_splicing, scm_sym_enter_frame,
+ scm_sym_apply_frame, scm_sym_exit_frame, scm_sym_trace,
+ scm_init_eval), gsubr.c (scm_sym_name, scm_init_gsubr), srcprop.c
+ (scm_sym_filename, scm_sym_copy, scm_sym_line, scm_sym_column,
+ scm_sym_breakpoint), variable.c (anonymous_variable_sym):
+ Initialize symbols by using SCM_(GLOBAL_)?SYMBOL.
+
+ * gc.c (scm_i_getenv_int): Moved here from init.c.
+
+ * gc.[ch] (scm_init_storage): Read gc configuration environment
+ variables here, not in init.c.
+
+ * init.c (scm_i_getenv_int): Moved to gc.c.
+
+ (scm_init_guile_1): Move configuration code to scm_init_storage.
+ Make sure procprops get initialized early.
+
+ * keywords.c (scm_c_make_keyword): Report amount of memory freed
+ by scm_must_free. Use scm_str2symbol instead of scm_sysintern0.
+
+ * options.c (scm_init_opts): Use scm_str2symbol instead of
+ scm_sysintern0.
+
+2000-12-10 Mikael Djurfeldt <mdj@linnaeus.mit.edu>
+
+ * threads.h (SCM_MUTEXP): Typo: removed extra parenthesis.
+
+2000-12-08 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * tags.h (SCM_TYP16_PREDICATE): New macro.
+ * arbiters.c (scm_tc16_arbiter): Typed as scm_bits_t.
+ (arbiter_print): Renamed from prinarb.
+ (scm_init_arbiters): Don't use scm_make_smob_type_mfpe.
+ * async.c (tc16_async): Typed as scm_bits_t.
+ (SCM_ASYNCP): Use SCM_TYP16_PREDICATE.
+ (async_mark): Renamed from mark_async.
+ (scm_init_async): Updated.
+ * continuations.h (SCM_CONTINUATIONP): Use SCM_TYP16_PREDICATE.
+ * debug.c (scm_tc16_memoized, scm_tc16_debugobj): Typed as scm_bits_t.
+ (memoized_print): Renamed from prinmemoized.
+ (debugobj_print): Renamed from prindebugobj.
+ (scm_init_debug): Don't use scm_make_smob_type_mfpe.
+ * debug.h (scm_tc16_memoized, scm_tc16_debugobj): Typed as scm_bits_t.
+ (SCM_DEBUGOBJP, SCM_MEMOIZEDP): Use SCM_TYP16_PREDICATE.
+ * dynl.c (scm_tc16_dynamic_obj): Typed as scm_bits_t.
+ (dynl_obj_mark): Renamed from mark_dynl_obj.
+ (dynl_obj_print): Renamed from print_dynl_obj.
+ (scm_dynamic_object_p): Use SCM_TYP16_PREDICATE.
+ (scm_init_dynamic_linking): Updated.
+ * dynwind.c (SCM_GUARDSP): Use SCM_TYP16_PREDICATE.
+ (tc16_guards): Typed as scm_bits_t.
+ (guards_print): Renamed from printguards.
+ (scm_init_dynwind): Don't use scm_make_smob_type_mfpe.
+ * environments.c (scm_tc16_environment, scm_tc16_observer):
+ Typed as scm_bits_t.
+ (environment_mark, environment_free, environment_print,
+ observer_mark, observer_print, leaf_environment_mark,
+ leaf_environment_free, leaf_environment_print,
+ eval_environment_mark, eval_environment_free,
+ eval_environment_print, import_environment_mark,
+ import_environment_free, import_environment_print,
+ export_environment_mark, export_environment_free,
+ export_environment_print): Renamed from mark_environment,
+ free_environment, print_environment, mark_observer,
+ print_observer, mark_leaf_environment, free_leaf_environment,
+ print_leaf_environment, mark_eval_environment,
+ free_eval_environment, print_eval_environment,
+ mark_import_environment, free_import_environment,
+ print_import_environment, mark_export_environment,
+ free_export_environment, and print_export_environment, respectively.
+ (free_observer): Removed.
+ (leaf_environment_funcs, eval_environment_funcs,
+ import_environment_funcs, export_environment_funcs,
+ scm_environments_prehistory): Updated.
+ * environments.h (scm_tc16_environment, scm_tc16_observer):
+ Typed as scm_bits_t.
+ * eval.c (scm_tc16_promise): Typed as scm_bits_t.
+ (promise_print): Renamed from prinprom.
+ (scm_promise_p): Use SCM_TYP16_PREDICATE.
+ (scm_init_eval): Updated.
+ * eval.h (scm_tc16_promise): Typed as scm_bits_t.
+ * filesys.c (scm_tc16_dir): Typed as scm_bits_t.
+ (scm_init_filesys): Don't use scm_make_smob_type_mfpe.
+ * filesys.h (scm_tc16_dir): Typed as scm_bits_t.
+ * fluids.c (scm_tc16_fluid): Typed as scm_bits_t.
+ (fluid_print): Renamed from print_fluid.
+ (scm_init_fluids): Don't use scm_make_smob_type_mfpe.
+ * fluids.h (scm_tc16_fluid): Typed as scm_bits_t.
+ * fports.c (fport_print): Renamed from prinfport.
+ (scm_make_fptob): Updated.
+ * guardians.c (tc16_guardian): Typed as scm_bits_t.
+ * hooks.c (scm_tc16_hook): Typed as scm_bits_t.
+ (hook_print): Renamed from print_hook.
+ (scm_init_hooks): Updated.
+ * hooks.h (scm_tc16_hook): Typed as scm_bits_t.
+ (SCM_HOOKP): Use SCM_TYP16_PREDICATE.
+ * keywords.c (scm_tc16_keyword): Typed as scm_bits_t.
+ (keyword_print): Renamed from prin_keyword.
+ (scm_init_keywords): Don't use scm_make_smob_type_mfpe.
+ * keywords.h (scm_tc16_keyword): Typed as scm_bits_t.
+ * macros.c (scm_tc16_macro): Typed as scm_bits_t.
+ (scm_macro_p, scm_macro_type): Use SCM_TYP16_PREDICATE.
+ (scm_init_macros): Don't use scm_make_smob_type_mfpe.
+ * macros.h (scm_tc16_macro): Typed as scm_bits_t.
+ * mallocs.c (scm_tc16_malloc): Typed as scm_bits_t.
+ (malloc_free): Renamed from fmalloc.
+ (malloc_print): Renamed from prinmalloc.
+ (scm_init_mallocs): Don't use scm_make_smob_type_mfpe.
+ * mallocs.h (scm_tc16_malloc): Typed as scm_bits_t.
+ * modules.h (SCM_EVAL_CLOSURE_P): Use SCM_TYP16_PREDICATE.
+ (scm_tc16_eval_closure): Renamed from scm_eval_closure_tag.
+ (scm_standard_eval_closure, scm_init_modules): Updated.
+ * ports.c (scm_tc16_void_port): Typed as scm_bits_t.
+ * print.c (scm_tc16_port_with_ps): Typed as scm_bits_t.
+ (port_with_ps_print): Renamed from print_port_with_ps.
+ (scm_init_print): Updated.
+ * print.h (scm_tc16_port_with_ps): Typed as scm_bits_t.
+ (SCM_PORT_WITH_PS_P): Use SCM_TYP16_PREDICATE.
+ * random.c (scm_tc16_rstate): Typed as scm_bits_t.
+ (rstate_free): Renamed from free_rstate.
+ (scm_init_random): Don't use scm_make_smob_type_mfpe.
+ * random.h (scm_tc16_rstate): Typed as scm_bits_t.
+ (SCM_RSTATEP): Use SCM_TYP16_PREDICATE.
+ * regex-posix.c (scm_tc16_regex): Typed as scm_bits_t.
+ (regex_free): Renamed from free_regex.
+ (scm_init_regex_posix): Don't use scm_make_smob_type_mfpe.
+ * regex-posix.h (scm_tc16_regex): Typed as scm_bits_t.
+ * root.c (scm_tc16_root): Typed as scm_bits_t.
+ (root_mark): Renamed from mark_root.
+ (root_print): Renamed from print_root.
+ (scm_init_root): Updated.
+ * root.h (scm_tc16_root): Typed as scm_bits_t.
+ (SCM_ROOTP): Use SCM_TYP16_PREDICATE.
+ * smob.c (free_print): Renamed from freeprint.
+ (scm_smob_prehistory): Don't use scm_make_smob_type_mfpe.
+ * smob.h (SCM_SMOB_PREDICATE): Use SCM_TYP16_PREDICATE.
+ * srcprop.c (scm_tc16_srcprops): Typed as scm_bits_t.
+ (srcprops_mark): Renamed from marksrcprops.
+ (srcprops_free): Renamed from freesrcprops.
+ (srcprops_print): Renamed from prinsrcprops.
+ (scm_init_srcprop): Don't use scm_make_smob_type_mfpe.
+ * srcprop.h (scm_tc16_srcprops): Typed as scm_bits_t.
+ (SRCPROPSP): Use SCM_TYP16_PREDICATE.
+ * threads.c (scm_tc16_thread, scm_tc16_mutex, scm_tc16_condvar):
+ Typed as scm_bits_t.
+ * threads.h (scm_tc16_thread, scm_tc16_mutex, scm_tc16_condvar):
+ Typed as scm_bits_t.
+ (SCM_THREADP, SCM_MUTEXP, SCM_CONDVARP): Use SCM_TYP16_PREDICATE.
+ * throw.c (tc16_jmpbuffer): Renamed from scm_tc16_jmpbuffer.
+ (make_jmpbuf): Updated.
+ (tc16_lazy_catch): Typed as scm_bits_t.
+ (SCM_JMPBUFP, SCM_LAZY_CATCH_P): Use SCM_TYP16_PREDICATE.
+ (jmpbuffer_print): Renamed from printjb.
+ (lazy_catch_print): Renamed from print_lazy_catch.
+ (scm_init_throw): Don't use scm_make_smob_type_mfpe.
+ * unif.c (scm_tc16_array): Typed as scm_bits_t.
+ (array_mark): Renamed from markra.
+ (array_free): Renamed from freera.
+ (scm_init_unif): Don't use scm_make_smob_type_mfpe.
+ * unif.h (scm_tc16_array): Typed as scm_bits_t.
+ (SCM_ARRAYP): Use SCM_TYP16_PREDICATE.
+ * validate.h (SCM_VALIDATE_SMOB): Use SCM_TYP16_PREDICATE.
+ * variable.c (scm_tc16_variable): Typed as scm_bits_t.
+ (variable_print): Renamed from prin_var.
+ (variable_equalp): Renamed from var_equal.
+ (scm_markvar): Removed.
+ (scm_init_variable): Don't use scm_make_smob_type_mfpe.
+ * variable.h (scm_tc16_variable): Typed as scm_bits_t.
+
+2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * feature.c (scm_add_feature), gh_data.c (gh_symbol2scm), goops.c
+ (scm_sys_prep_layout_x, scm_make_class, scm_add_slot,
+ scm_init_goops), load.c (init_build_info), print.c
+ (scm_init_print), read.c (scm_lreadr), snarf.h (SCM_SYMBOL,
+ SCM_GLOBAL_SYMBOL), stacks.c (scm_init_stacks), struct.c
+ (scm_make_struct_layout), symbols.c (scm_sysintern0,
+ scm_string_to_symbol, scm_gensym), throw.c
+ (scm_handle_by_message): Use scm_mem2symbol or scm_str2symbol
+ instead of scm_intern_* to create a symbol object.
+
+ * goops.c (Intern): Removed.
+
+ (CALL_GF1, CALL_GF2, CALL_GF3, CALL_GF4, build_class_class_slots,
+ create_basic_classes, scm_class_name, scm_class_direct_supers,
+ scm_class_direct_slots, scm_class_direct_subclasses,
+ scm_class_direct_methods, scm_class_precedence_list,
+ scm_class_slots, scm_class_environment,
+ scm_generic_function_methods, scm_method_generic_function,
+ scm_method_specializers, scm_method_procedure,
+ scm_accessor_method_slot_definition, purgatory, scm_make,
+ make_stdcls, create_standard_classes, make_class_from_template,
+ scm_make_class): Replaced calls to Intern with calls to
+ scm_str2symbol.
+
+ * ramap.c (init_raprocs): Use scm_symbol_binding instead of
+ scm_intern.
+
+ * symbols.c (scm_sym2vcell): Add a bogus return to avoid compiler
+ warnings.
+
+ * unif.c (scm_array_prototype): Fix prototype return value for
+ svects and llvects.
+
+2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * symbols.[ch] (scm_mem2symbol, scm_str2symbol): New functions.
+ These shall replace all those calls to scm_intern... which are
+ only required to create a scheme symbol from a C string or a field
+ of chars.
+
+2000-12-08 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * environments.c (DEFAULT_OBARRAY_SIZE), gc.c
+ (DEFAULT_SYMHASH_SIZE): Added to locally determine arbitrary
+ default values for obarrays, thus removing the dependency from
+ scm_symhash_dim.
+
+ * environments.c (scm_make_leaf_environment,
+ scm_make_eval_environment), gc.c (scm_init_storage): Don't use
+ scm_symhash_dim.
+
+ * symbols.c (NUM_HASH_BUCKETS), symbols.[ch] (scm_symhash_dim):
+ Removed.
+
+ * symbols.c (scm_sym2vcell, scm_sysintern0_no_module_lookup):
+ Eliminate a redundant SCM_IMP test.
+
+ (scm_sym2vcell, scm_sysintern0_no_module_lookup):
+ Don't assume a fixed obarray size any more.
+
+2000-12-07 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (scm_init_gc): gc_async is already protected from gc,
+ namely via scm_asyncs. Thanks to Keisuke Nishida for pointing
+ this out.
+
+2000-12-07 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * smob.h (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
+ scm_smob_apply_3): Removed declarations.
+ (scm_set_smob_apply): Takes unsigned integers.
+ (scm_make_smob_type_mfpe, scm_set_smob_mfpe): Deprecated.
+ * smob.c (scm_smob_apply_0_000, scm_smob_apply_1_010,
+ scm_smob_apply_2_020): Removed.
+ (scm_set_smob_apply): Takes unsigned integers + some optimization.
+ (Thanks to Dirk Herrmann)
+ (scm_make_smob_type_mfpe, scm_set_smob_mfpe): Deprecated.
+
+2000-12-07 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * smob.h (SCM_SMOB_APPLICABLE_P, SCM_SMOB_APPLY_0,
+ SCM_SMOB_APPLY_1, SCM_SMOB_APPLY_2, SCM_SMOB_APPLY_3): New macros.
+ * eval.c (SCM_CEVAL, SCM_APPLY): Use macros above.
+ * procprop.c (scm_i_procedure_arity): Ditto.
+ * smob.c (scm_make_smob_type): Initialize gsubr_type.
+
+2000-12-06 Keisuke Nishida <kxn30@po.cwru.edu>
+
+ * smob.h (scm_smob_descriptor): New fields `apply_0', `apply_1',
+ `apply_2', and `apply_3'.
+ * smob.c (scm_make_smob_type): Init new fields.
+ (SCM_SMOB_APPLY0, SCM_SMOB_APPLY1, SCM_SMOB_APPLY2, SCM_SMOB_APPLY3):
+ New macros.
+ (scm_smob_apply_0_000, scm_smob_apply_0_010, scm_smob_apply_0_020,
+ scm_smob_apply_0_030, scm_smob_apply_0_001, scm_smob_apply_0_011,
+ scm_smob_apply_0_021, scm_smob_apply_0_error,
+ scm_smob_apply_1_010, scm_smob_apply_1_020, scm_smob_apply_1_030,
+ scm_smob_apply_1_001, scm_smob_apply_1_011, scm_smob_apply_1_021,
+ scm_smob_apply_1_error,
+ scm_smob_apply_2_020, scm_smob_apply_2_030, scm_smob_apply_2_001,
+ scm_smob_apply_2_011, scm_smob_apply_2_021, scm_smob_apply_2_error,
+ scm_smob_apply_3_030, scm_smob_apply_3_001, scm_smob_apply_3_011,
+ scm_smob_apply_3_021, scm_smob_apply_3_error): New functions.
+ (scm_set_smob_apply): Set new fields to the above functions.
+ (scm_smob_apply_0, scm_smob_apply_1, scm_smob_apply_2,
+ scm_smob_apply_3): Removed.
+ * eval.c (SCM_CEVAL, SCM_APPLY): Rewrote smob calls.
+
+2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (scm_init_gc): gc_async must be protected from gc. I
+ wonder why we never ran into problems up to now...
+
+2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gc.c (scm_init_gc): Don't create a binding for %gc-thunk.
+
+2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * gsubr.c: No need to include vector.h.
+
+ (scm_gsubr_apply): Use SCM_GSUBR_MAX instead of hard-coded value.
+ Added FUNC_NAME wrapping. Improved (temporarily?) disabled
+ debugging code. Replaced SCM_IMP with SCM_NULLP. Eliminated call
+ to ASRTGO.
+
+ (scm_init_gsubr): Eliminated outdated comment.
+
+2000-12-06 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * async.c (SCM_ASYNCP): Use SCM_TYP16 instead of SCM_GCTYP16.
+
+ * eval.c (scm_m_vref, scm_m_vset, scm_m_define, SCM_CEVAL,
+ SCM_APPLY, scm_copy_tree): Remove commented code.
+
+ (SCM_CEVAL, SCM_APPLY): Remove #ifdef CCLO conditionals. Without
+ CCLO being defined, guile would not compile at all anyway.
+
+ * gc.h (SCM_GC8MARKP, SCM_SETGC8MARK, SCM_CLRGC8MARK, SCM_GCTYP16,
+ SCM_GCCDR): Deprecated.
+
+ * gdbint.c (unmark_port, remark_port, gdb_read), procs.c
+ (scm_mark_subr_table): Use SCM_(SET|CLR)?GCMARK(P)? instead of
+ SCM_(SET|CLR)?GC8MARK(P)?.
+
+ * gh_data.c (gh_scm2char): Remove bogus ';'.
+
+ * tags.h: Removed comment about GCTYP16 macro.
+
+ * weaks.c (scm_mark_weak_vector_spines): Use SCM_CDR instead of
+ SCM_GCCDR.
+
+2000-12-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * print.c (scm_iprin1): Use scm_tc3_* codes instead of hardcoded
+ values. Added comment about tc3 codes that may appear in
+ immediates. Got rid of one goto command.
+
+2000-12-05 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * dynl.c (sysdep_dynl_link): Improved error reporting.
+
+ * guardians.c: Changed the representation from a compiled closure
+ to an applicable smob.
+
+ (guard1, CCLO_G): Removed.
+
+ (guard, g_mark, g_print, scm_tc16_guardian, scm_guardian_gc_init,
+ scm_guardian_zombify): Renamed to guardian_apply, guardian_mark,
+ guardian_print, tc16_guardian, guardian_gc_init and
+ guardian_zombify, respectively.
+
+ (guardian_free): Added, fixes a memory leak.
+
+ (guardian_print): Don't use sprintf hack.
+
+ (guardian_apply, scm_guard, scm_get_one_zombie,
+ scm_make_guardian): Don't use a compiled closure.
+
+ (guardian_zombify): Prefer !SCM_NULLP over SCM_NIMP. No need to
+ use SCM_GCCDR any more. Simplified loop condition.
+
+ (scm_init_guardian): Don't use scm_make_smob_type_mfpe for smob
+ initialization. Initialize applicable smob.
+
+2000-12-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * chars.c (scm_char_eq_p): Minor cleanup/optimization.
+
+ * gc.c (scm_gc_mark): Don't use SCM_VELTS for CCLOs.
+
+ * procprop.c (scm_i_procedure_arity): Separate handling of smobs
+ and CCLOs.
+
2000-12-04 Dirk Herrmann <D.Herrmann@tu-bs.de>
* tags.h (scm_tc_free_cell, scm_tc16_big, scm_tc16_real,