1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 20:00:19 +02:00
Commit graph

175 commits

Author SHA1 Message Date
Michael Livshin
1be6b49ccb * validate.h
(SCM_NUM2{SIZE,PTRDIFF,SHORT,USHORT,BITS,UBITS,INT,UINT}[_DEF]):
new macros.

* unif.h: type renaming:
scm_array -> scm_array_t
scm_array_dim -> scm_array_dim_t
the old names are deprecated, all in-Guile uses changed.

* tags.h (scm_ubits_t): new typedef, representing unsigned
scm_bits_t.

* stacks.h: type renaming:
scm_info_frame -> scm_info_frame_t
scm_stack -> scm_stack_t
the old names are deprecated, all in-Guile uses changed.

* srcprop.h: type renaming:
scm_srcprops -> scm_srcprops_t
scm_srcprops_chunk -> scm_srcprops_chunk_t
the old names are deprecated, all in-Guile uses changed.

* gsubr.c, procs.c, print.c, ports.c, read.c, rdelim.c, ramap.c,
rw.c, smob.c, sort.c, srcprop.c, stacks.c, strings.c, strop.c,
strorder.c, strports.c, struct.c, symbols.c, unif.c, values.c,
vectors.c, vports.c, weaks.c:
various int/size_t -> size_t/scm_bits_t changes.

* random.h: type renaming:
scm_rstate -> scm_rstate_t
scm_rng -> scm_rng_t
scm_i_rstate -> scm_i_rstate_t
the old names are deprecated, all in-Guile uses changed.

* procs.h: type renaming:
scm_subr_entry -> scm_subr_entry_t
the old name is deprecated, all in-Guile uses changed.

* options.h (scm_option_t.val): unsigned long -> scm_bits_t.
type renaming:
scm_option -> scm_option_t
the old name is deprecated, all in-Guile uses changed.

* objects.c: various long -> scm_bits_t changes.
(scm_i_make_class_object): flags: unsigned long -> scm_ubits_t

* numbers.h (SCM_FIXNUM_BIT): deprecated, renamed to
SCM_I_FIXNUM_BIT.

* num2integral.i.c: new file, multiply included by numbers.c, used
to "templatize" the various integral <-> num conversion routines.

* numbers.c (scm_mkbig, scm_big2num, scm_adjbig, scm_normbig,
scm_copybig, scm_2ulong2big, scm_dbl2big, scm_big2dbl):
deprecated.
(scm_i_mkbig, scm_i_big2inum, scm_i_adjbig, scm_i_normbig,
scm_i_copybig, scm_i_short2big, scm_i_ushort2big, scm_i_int2big,
scm_i_uint2big, scm_i_long2big, scm_i_ulong2big, scm_i_bits2big,
scm_i_ubits2big, scm_i_size2big, scm_i_ptrdiff2big,
scm_i_long_long2big, scm_i_ulong_long2big, scm_i_dbl2big,
scm_i_big2dbl, scm_short2num, scm_ushort2num, scm_int2num,
scm_uint2num, scm_bits2num, scm_ubits2num, scm_size2num,
scm_ptrdiff2num, scm_num2short, scm_num2ushort, scm_num2int,
scm_num2uint, scm_num2bits, scm_num2ubits, scm_num2ptrdiff,
scm_num2size): new functions.

* modules.c (scm_module_reverse_lookup): i, n: int -> scm_bits_t.x

* load.c: change int -> size_t in various places (where the
variable is used to store a string length).
(search-path): call scm_done_free, not scm_done_malloc.

* list.c (scm_ilength): return a scm_bits_t, not long.
some other {int,long} -> scm_bits_t changes.

* hashtab.c: various [u]int -> scm_bits_t changes.
scm_ihashx_closure -> scm_ihashx_closure_t (and made a typedef).
(scm_ihashx): n: uint -> scm_bits_t
use scm_bits2num instead of scm_ulong2num.

* gsubr.c: various int -> scm_bits_t changes.

* gh_data.c (gh_scm2double): no loss of precision any more.

* gh.h (gh_str2scm): len: int -> size_t
(gh_{get,set}_substr): start: int -> scm_bits_t,
len: int -> size_t
(gh_<num>2scm): n: int -> scm_bits_t
(gh_*vector_length): return scm_[u]size_t, not unsigned long.
(gh_length): return scm_bits_t, not unsigned long.

* fports.h: type renaming:
scm_fport -> scm_fport_t
the old name is deprecated, all in-Guile uses changed.

* fports.c (fport_fill_input): count: int -> scm_bits_t
(fport_flush): init_size, remaining, count: int -> scm_bits_t

* debug.h (scm_lookup_cstr, scm_lookup_soft, scm_evstr): removed
those prototypes, as the functions they prototype don't exist.

* fports.c (default_buffer_size): int -> size_t
(scm_fport_buffer_add): read_size, write_size: int -> scm_bits_t
default_size: int -> size_t
(scm_setvbuf): csize: int -> scm_bits_t

* fluids.c (n_fluids): int -> scm_bits_t
(grow_fluids): old_length, i: int -> scm_bits_t
(next_fluid_num, scm_fluid_ref, scm_fluid_set_x): n: int ->
scm_bits_t
(scm_c_with_fluids): flen, vlen: int -> scm_bits_t

* filesys.c (s_scm_open_fdes): changed calls to SCM_NUM2LONG to
the new and shiny SCM_NUM2INT.

* extensions.c: extension -> extension_t (and made a typedef).

* eval.h (SCM_IFRAME): cast to scm_bits_t, not int.  just so
there are no nasty surprises if/when the various deeply magic tag
bits move somewhere else.

* eval.c: changed the locals used to store results of SCM_IFRAME,
scm_ilength and such to be of type scm_bits_t (and not int/long).
(iqq): depth, edepth: int -> scm_bits_t
(scm_eval_stack): int -> scm_bits_t
(SCM_CEVAL): various vars are not scm_bits_t instead of int.
(check_map_args, scm_map, scm_for_each): len: long -> scm_bits_t
i: int -> scm_bits_t

* environments.c: changed the many calls to scm_ulong2num to
scm_ubits2num.
(import_environment_fold): proc_as_ul: ulong -> scm_ubits_t

* dynwind.c (scm_dowinds): delta: long -> scm_bits_t

* debug.h: type renaming:
scm_debug_info -> scm_debug_info_t
scm_debug_frame -> scm_debug_frame_t
the old names are deprecated, all in-Guile uses changed.
(scm_debug_eframe_size): int -> scm_bits_t

* debug.c (scm_init_debug): use scm_c_define instead of the
deprecated scm_define.

* continuations.h: type renaming:
scm_contregs -> scm_contregs_t
the old name is deprecated, all in-Guile uses changed.
(scm_contregs_t.num_stack_items): size_t -> scm_bits_t
(scm_contregs_t.num_stack_items): ulong -> scm_ubits_t

* continuations.c (scm_make_continuation): change the type of
stack_size form long to scm_bits_t.

* ports.h: type renaming:
scm_port_rw_active -> scm_port_rw_active_t (and made a typedef)
scm_port -> scm_port_t
scm_ptob_descriptor -> scm_ptob_descriptor_t
the old names are deprecated, all in-Guile uses changed.
(scm_port_t.entry): int -> scm_bits_t.
(scm_port_t.line_number): int -> long.
(scm_port_t.putback_buf_size): int -> size_t.

* __scm.h (long_long, ulong_long): deprecated (they pollute the
global namespace and have little value besides that).
(SCM_BITS_LENGTH): new, is the bit size of scm_bits_t (i.e. of an
SCM handle).
(ifdef spaghetti): include sys/types.h and sys/stdtypes.h, if they
exist (for size_t & ptrdiff_t)
(scm_sizet): deprecated.

* Makefile.am (noinst_HEADERS): add num2integral.i.c
2001-05-24 00:50:51 +00:00
Marius Vollmer
08045107a0 (scm_init_guile_1): Call scm_init_extensions. 2001-05-20 19:29:11 +00:00
Marius Vollmer
e2d085f3a2 (scm_init_guile_1): Call `scm_init_goops' instead of
`scm_init_oop_goops_goopscore_module'.  Call `scm_init_rdelim' and
`scm_init_rw' prior to loading the startup files.
2001-05-19 00:29:36 +00:00
Marius Vollmer
86d31dfe7d Merge from mvo-vcell-cleanup-1-branch. 2001-05-15 14:57:22 +00:00
Dirk Herrmann
7c33806ae6 * Make SCM_DEBUG_CELL_ACCESSES=1 work with GUILE_DEBUG_FREELIST. 2001-05-15 09:45:10 +00:00
Dirk Herrmann
56e55ac7cf * Removed deprecated hook names.
* Fix use of SCM_FLOBUFLEN.
2001-05-08 10:23:17 +00:00
Marius Vollmer
388bebbc7e * init.c: Include "deprecation.h".
(scm_init_guile_1): Call scm_init_deprecation.
2001-05-02 00:47:50 +00:00
Gary Houston
b0e5fd8c3d * rw.c: new file, implementing C part of module (ice-9 rw).
(scm_read_string_x_partial): moved from ioext.c
	(scm_init_rw): new proc.
	* rw.h: new file.
	init.c: include rw.h and call scm_init_rw.
	Makefile.am: include rw.c and rw.h.
2001-04-29 13:03:14 +00:00
Marius Vollmer
f2c4aa2a16 * eval.h, eval.c (scm_system_transformer): Deprecated by moving it
into the conditionally compiled sections.
* eval.c (scm_primitive_eval_x, scm_primitive_eval): Use
scm_current_module_transformer instead of scm_system_transformer.
* init.c (start_stack): Move initialization of
scm_system_transformer to the deprecated section.
2001-04-24 23:31:38 +00:00
Mikael Djurfeldt
508ded1cdb * init.c, goops.c: Reverted change of 2001-03-29. (The goops
module should be registered in order to work for an application
which uses libguile statically linked.)
2001-04-11 02:09:35 +00:00
Keisuke Nishida
1b27e91a9b * goops.c, goops.h (scm_init_oop_goops_goopscore_module): Deprecated.
* init.c (scm_init_guile_1): Don't init goopscore module.
2001-03-30 02:50:38 +00:00
Keisuke Nishida
9e6fc585b2 Remove dump facilities. 2001-03-02 23:41:18 +00:00
Keisuke Nishida
03416a991e New files: dump.c, dump.h. 2001-02-03 04:59:16 +00:00
Dirk Herrmann
a98bddfd12 * Made the port implementations less tightly coupled within guile. 2001-01-25 17:18:41 +00:00
Gary Houston
fd937ecb02 *** empty log message *** 2001-01-24 21:47:23 +00:00
Michael Livshin
56495472c2 * 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 23:00:23 +00:00
Dirk Herrmann
de42a0ee0f * New environment variable scm_system_environment to replace scm_symhash. 2000-12-15 23:21:06 +00:00
Dirk Herrmann
0f979f3fb6 * Renamed scm_symbols to symbols and made it static in symbols.c. 2000-12-13 11:38:30 +00:00
Dirk Herrmann
85db4a2c8e * Initialize symbols using SCM_(GLOBAL_)?SYMBOL instead of scm_sysintern...
* Use scm_str2symbol instead of scm_sysintern0.
* Garbage collection initialization code now within gc.c only.
2000-12-11 14:48:23 +00:00
Gary Houston
ce21243418 * reimplementation of values, call-with-values as primitives:
* values.c, values.h: new files.  use a struct to contain multiple
	values, similar to the previous Scheme-level implementation.
	* Makefile.am: add values.c, values.h, values.x.
	* continuations.c (continuation_apply): support R5RS multiple value
	continuations.
	* init.c: call scm_init_values.
	* struct.h: define SCM_SET_STRUCT_PRINTER.
2000-11-26 18:27:49 +00:00
Gary Houston
5f144b105d * use an applicable SMOB to represent continuations, instead of a
custom tc7 type.  This will make it easier to support R5RS
	multiple value continuations, without the use of a Scheme-level
	wrapper.

	* continuations.c (scm_tc16_continuation, continuation_mark,
	continuation_free, continuation_print, continuation_apply):
	new SMOB support.
	(scm_make_continuation): new procedure, replaces scm_make_cont
	with a different interface.
	(copy_stack_and_call, scm_dynthrow, scm_init_continuations): rewritten.
	(CHEAP_CONTINUATIONS): removed non-working code completely.
	(scm_call_continuation): removed.
	* continuations.h (struct scm_contregs): add num_stack_items and
	stack fields.  previously stack was stored following this struct:
	use a tail array instead.
	(SCM_CONTINUATIONP): new macro.
	(SCM_CONTINUATION_LENGTH, SCM_SET_CONTINUATION_LENGTH):
	rewritten.
	(SCM_SET_CONTREGS): removed.
	* tags.h: removed scm_tc7_contin (was tag 61).
	* debug.c, gc.c, hash.c, print.c, procprop.c, procs.c:
	removed scm_tc7_contin support.
	* eval.c: use scm_make_continuation instead of scm_make_cont.
	don't set jump buffers here.  remove scm_tc7_contin support.
	* init.c, root.c: create SMOB continuation for rootcont instead
	of scm_tc7_contin.  call scm_init_continuations before
	scm_init_root.
	* root.c: remove support for static jmpbuf.  It's not used by
	default and I broke it.  create SMOB continuation for rootcont.
	* stacks.c: use SCM_CONTINUATIONP.
2000-11-25 16:58:25 +00:00
Mikael Djurfeldt
acfee8e1d0 * init.c (scm_init_guile_1): Call the goops module registration
function.
Added #include "libguile/goops.h".
2000-10-25 14:49:56 +00:00
Marius Vollmer
612a55e5e3 * init.c (scm_init_guile_1, invoke_main_func): Call
scm_load_startup_files in scm_init_guile_1, not in
invoke_main_func.
2000-10-20 00:31:29 +00:00
Marius Vollmer
ec009b22a9 * gc.h (scm_get_stack_base): Added prototype.
* init.c (scm_get_stack_base): Removed prototype.
2000-10-11 19:22:06 +00:00
Marius Vollmer
b4255788b5 * init.c: Include "libguile/properties.h". 2000-09-05 18:39:09 +00:00
Marius Vollmer
7ad3a9782e * init.c (scm_init_guile, scm_init_guile_1): New interface for
initializing Guile that does return to the caller.
(scm_boot_guile_1): Use scm_init_guile_1 to initialize Guile.
Do not establish a catch-all, this is no longer needed.
2000-09-03 20:23:55 +00:00
Dirk Herrmann
5d3e2388f3 * Added Jost Boekemeier's implementation of environments to guile.
* Added a test suite for (up to now only) leaf environments.
2000-08-25 17:01:32 +00:00
Mikael Djurfeldt
26795895e2 Deprecated scm_top_level_lookup_closure_var 2000-08-11 08:45:19 +00:00
Mikael Djurfeldt
1d49cea8b8 * init.c (scm_boot_guile_1): Call scm_struct_prehistory. 2000-08-09 18:29:21 +00:00
Dirk Herrmann
939794ce7f * Cleaned up initialization of asyncs.
* Moved handling of scm_gc_async to gc.c.
* Extracted handling of scheme level after-gc-hook from gc core.
2000-06-28 10:26:52 +00:00
Mikael Djurfeldt
bf1b9494f7 * init.c, init.h (scm_initialized_p): Renamed from `initialized'
and made global.
2000-06-19 00:41:33 +00:00
Dirk Herrmann
e11f8b42f2 * The name property of hooks is deprecated. 2000-05-26 16:31:22 +00:00
Michael Livshin
686765af61 * gc.h (SCM_[SET_]CELL_{WORD,OBJECT}, SCM_VALIDATE_CELL): brought
the yucky, ugly and nasty conditional compilation back.  sorry,
but it was either that or requiring GAWK to build Guile.
removed the code that implemented the old GC scheme.

* init.c (scm_boot_guile_1): removed the code conditioned on
!GUILE_NEW_GC_SCHEME.

* __scm.h: (GUILE_NEW_GC_SCHEME): removed.

* gc.c (scm_protect_object, scm_unprotect_object): change the
implementation to more efficient (at least in the time complexity
sense).  the calls should now also be thread-safe -- I suspect
that people expect them to be.  (thanks to Han-Wen Nienhuys)
removed the code that implemented the old GC scheme.

* hashtab.c (scm_hash_fn_create_handle_x): add missing
SCM_REALLOW_INTS before return.
2000-05-21 20:49:20 +00:00
Mikael Djurfeldt
2b9c869029 * init.c (scm_boot_guile_1): Added `scm_init_hooks'. 2000-04-21 23:13:44 +00:00
Mikael Djurfeldt
a059974535 * Makefile.am (DEFS): Added. automake adds -I options to DEFS,
and we don't want that.
(INCLUDES): Removed all -I options except for the root source
directory and the root build directory.

* *.*: Change includes so that they always use the "prefixes"
libguile/, qt/, guile-readline/, or libltdl/.
(Thanks to Tim Mooney.)
2000-04-21 14:16:44 +00:00
Mikael Djurfeldt
6b815f1a10 * init.c (scm_boot_guile_1): Added calls to debug-malloc init
functions.
2000-04-21 00:27:27 +00:00
Dirk Herrmann
54778cd312 Lots of fixes to make guile (at some time) compile with strict typing. 2000-04-03 08:47:51 +00:00
Dirk Herrmann
8b3bda2058 Cleaned up continuation data access. 2000-03-28 17:13:40 +00:00
Mikael Djurfeldt
70a95005c0 * init.c (scm_boot_guile_1): Renamed GUILE_GC_TRIGGER_1 -->
GUILE_MIN_YIELD_1, GUILE_GC_TRIGGER_2 --> GUILE_MIN_YIELD_2.
2000-03-21 03:56:07 +00:00
Michael Livshin
89e00824a0 * *.[hc]: add Emacs magic at the end of file, to ensure GNU
indentation style.
2000-03-19 19:01:16 +00:00
Mikael Djurfeldt
08f77a4459 * init.c (scm_boot_guile_1): Introduced new variable
GUILE_MAX_SEGMENT_SIZE; New environment variable names:
GUILE_INIT_SEGMENT_SIZE_1, GUILE_GC_TRIGGER_1,
GUILE_INIT_SEGMENT_SIZE_2, GUILE_GC_TRIGGER_2
2000-03-17 08:09:03 +00:00
Mikael Djurfeldt
5a55154239 *** empty log message *** 2000-03-16 04:04:25 +00:00
Mikael Djurfeldt
dd45c0dfdb Removed some stupid code. 2000-03-15 15:19:50 +00:00
Mikael Djurfeldt
4a4c9785e0 * gc.c, gc.h, pairs.h, init.c: Implementation of a new way of
allocating heap.  The basic idea is to trigger GC every Nth
allocated cell and grow heap when free list runs out.  The scheme
has been extended so that GC isn't triggered until all remaining
cells are used.  The implementation is also prepared for
development in the direction of POSIX threads.

* gc.c (SCM_EXPHEAP): In order to grow by a factor of 1.5,
SCM_EXPHEAP should return half of the heap size.
2000-03-15 07:30:53 +00:00
Mikael Djurfeldt
de1bc44946 The following change to init.c is only enabled if Guile was
configured with --enable-guile-debug.

* init.c (scm_i_getenv_int): New function.
(scm_boot_guile_1): Use the environment variables
GUILE_INIT_HEAP_SIZE, GUILE_INIT_HEAP_SIZE2 to select heap size if
they exist.  (This may be replaced by a Scheme level mechanism in
the future.)
2000-03-14 22:15:12 +00:00
Mikael Djurfeldt
069fe4257c * init.c (scm_boot_guile_1): Use same initial segment size for
1-word and 2-word segments.  Having the smaller size causes Guile
to GC too often.  Obviously something needs to be done to allow
for a smaller 2-word segment without this to happen.  (The amount
of heap for each type should be automatically adapted to the
application somehow.)
2000-03-14 15:12:12 +00:00
Mikael Djurfeldt
5322a65563 * init.c (scm_boot_guile_1): Make 2-word segment 8K (512 cells). 2000-03-14 09:03:20 +00:00
Mikael Djurfeldt
16d35552c4 *** empty log message *** 2000-03-14 06:43:57 +00:00
Gary Houston
70df8af662 * ports.c (flush_void_port): renamed to flush_port_default.
(end_input_void_port): renamed to end_input_default.

	* init.c (scm_standard_stream_to_port): create a void port instead
	of opening /dev/null if the standard file descriptors are bad.
	advantages: no portability problems, doesn't waste a file descriptor,
	simplifies the code (thanks to Marius for the idea).

	* vports.c (s_scm_make_soft_port): call scm_port_non_buffer.

	* void ports: make reading from a void port give EOF instead of
	segv:
	* ports.c (s_scm_sys_make_void_port): modified docstring.
	(fill_input_void_port): new proc.
	(scm_init_ports): set up fill_input_void_port.
	* ports.c (scm_port_non_buffer): new proc.
	(scm_void_port): call scm_port_non_buffer.

	* fports.c (scm_setvbuf): docstring: remove the fcntl documentation
	which was incorrectly appended.
2000-03-13 22:21:21 +00:00
Gary Houston
19b27fa236 * fports.c (scm_fdes_to_port): call fcntl F_GETFL to test that
the fdes is valid before doing anything else.  check that
	the file descriptor supports the modes required.
	(scm_fport_buffer_add): don't throw an error if fstat doesn't
	work: just use the default buffer size.

	* throw.c: change an outdated comment about scm_internal_catch
	BODY: it doesn't take a jumpbuf arg.

	* init.c (scm_standard_stream_to_port): install a handler in case
	scm_fdes_to_port throws an error.  don't check here whether the
	file descriptor is valid, since scm_fdes_to_port will do that.
	set the revealed count depending on whether the port got the
	standard file descriptor.
	(stream_body_data): new type.
	(stream_body, stream_handler): new procs.
2000-03-12 19:58:56 +00:00