X-Git-Url: http://git.hcoop.net/bpt/guile.git/blobdiff_plain/f1d316dd37a895f70b83cda3f6b6159a2bd4a1c2..b82c6ce052e2cb3b9e0f50c18ea7c562dd1b08c3:/libguile/ChangeLog diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 5144de3bd..d6a893735 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,7 +1,1050 @@ +2000-05-04 Dirk Herrmann + + * 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 + + * 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 + + * 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 + + * Makefile.am (INCLUDES): add ${INCLTDL} (thanks to Tim Mooney). + +2000-05-02 Dirk Herrmann + + * 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 + + * 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 + + * 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 + + * 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 + + * posix.c (scm_execlp): docstring fix (thanks to Martin + Grabmueller). + +2000-04-25 Dirk Herrmann + + * eval.c (undef_object): Made into a local static variable + (suggested by Jost Boekemeier). + +2000-04-25 Dirk Herrmann + + * 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 + + 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * script.c (scm_compile_shell_switches): Also enable + record-positions when given the --debug option. (Thanks to Diego + Dainese.) + +2000-04-18 Dirk Herrmann + + * 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 + + * 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 + + * 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 + + * validate.h (SCM_VALIDATE_INUM_RANGE_COPY, + SCM_VALIDATE_NUMBER_COPY): New macros. + +2000-04-16 Mikael Djurfeldt + + * script.c (scm_compile_shell_switches): Added --debug option. + +2000-04-16 Mikael Djurfeldt + + * vectors.c (scm_vector_set_x): Return SCM_UNSPECIFIED (as + specified by R5RS). + +2000-04-15 Mikael Djurfeldt + + * 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 + + * 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 + + * unif.c, unif.h (shared-array-root, shared-array-offset, + shared-array-increments): New primitives. + +2000-04-12 Dirk Herrmann + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * objects.h: Don't redeclare scm_call_generic_0 and + scm_apply_generic. (Thanks to Tal Tversky.) + +2000-04-10 Dirk Herrmann + + * 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 + + * coop.c (mother): Handled EINTR (the wait has been interrupted by + a signal). + +2000-04-07 Dirk Herrmann + + * __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 + + * 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 + + * 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 + + * 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 + + * 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 + + * print.c: Removed promise to rewrite printer code before next + release. :) + +2000-04-03 Mikael Djurfeldt + + * iselect.c (add_fd_sets): Insert empty statement after label. + (Thanks to Tim Mooney.) + +2000-04-03 Michael Livshin + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * 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 + + * struct.h (SCM_STRUCT_DATA): Don't cast SCM values to pointers. + +2000-03-21 Dirk Herrmann + + * 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 + + * vectors.h (SCM_VELTS, SCM_VELTS_AS_STACKITEMS): Don't cast SCM + values to pointers. Use SCM2PTR instead. + +2000-03-21 Dirk Herrmann + + * async.c (scm_set_tick_rate, scm_set_switch_rate): Don't unpack + results of SCM_INUM. + +2000-03-21 Mikael Djurfeldt + + * 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 + + * 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 * 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. @@ -68,22 +1111,22 @@ 2000-03-18 Michael Livshin - * 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.