* test-suite/standalone/Makefile.am (test_cflags): Add `-I$(top_builddir)' so
that <config.h> can be found.
(snarfcppopts): Likewise.
* test-suite/standalone/*.c: Include <config.h>.
* libguile/vm-i-system.c (call): Rename continuation invocation from
`vm_call_cc' to `vm_call_continuation', because that's what it really
does. Add a note that it doesn't handle multiple values at the moment.
(goto/arg): Renamed from tail-call, in deference to the progenitors, on
Dale Smith's suggestion.
(goto/apply): New instruction, for `apply' in a tail context. Not yet
used, or vetted for that matter.
(call/cc): No need to pop the program, I don't think; although this
isn't tested either.
(goto/cc): New instruction, for call/cc in a tail context.
* module/language/scheme/translate.scm (*forbidden-primitives*): Rename
from %forbidden-primitives.
* module/system/il/compile.scm (codegen): Adapt to goto/args instead of
tail-call.
* module/system/il/inline.scm: Start inlining some macros used in
r4rs.scm -- not yet fully tested.
* ice-9/boot-9.scm: Allow load of a compiled r4rs file.
* libguile/frames.c (frame-mv-return-address): New accessor.
* libguile/frames.h: Update frame diagram.
(SCM_FRAME_UPPER_ADDRESS): Update for data area
growing by one pointer.
(SCM_FRAME_MV_RETURN_ADDRESS): New macro.
* libguile/vm-engine.h (NEW_FRAME): Update for frame getting bigger by a
pointer. In a normal NEW_FRAME, set the MV return address to NULL, to
indicate that this continuation does not accept multiple values.
* libguile/vm-i-system.c (tail-call): Update frame replacement code to
understand the MV return address.
(return): Make room for the MVRA.
* libguile/programs.c (program_print): Only try to lookup write-program
if the module system is booted.
* libguile/vm-engine.h (FREE_FRAME): Remove, it's now inlined everywhere.
* libguile/vm-i-system.c (tail-call): Inline FREE_FRAME, and implement
the calling bits here. Will make things more hackable.
* module/system/vm/program.scm (program-bindings-as-lambda-list): Handle
the bindings-is-null case too -- not sure how it comes about, though. A
thunk with no let, perhaps.
(write-program): Another default for the name: the source location at
which it was defined.
* libguile/programs.c (program_print): Add some "logic" to stop doing
detailed prints if one print had a nonlocal exit -- preventing
exceptions in backtraces.
* module/system/vm/frame.scm (frame-call-representation)
(frame-program-name): Rename program-name to frame-program-name, and
use the program-name if it is available.
* module/system/vm/program.scm (program-bindings): Return #f if there are
no bindings.
(program-name): New public procedure.
(program-bindings-as-lambda-list, write-program): A more useful writer
for programs.
* libguile/programs.c (scm_bootstrap_programs, program_print): Add a smob
printer for programs, which dispatches to `write-program'.
* module/language/scheme/translate.scm (primitive-syntax-table): In forms
like (define x y) where y is a lambda, and the lambda has no name yet,
set the lambda's name in its metadata.
* module/system/il/compile.scm (codegen): Fix *another* bug in compiling
`or' -- in the case in which the value was being discarded, as in `or'
used as a control structure, we were sometimes leaving a value on the
stack.
* testsuite/t-or.scm: Add another test case for `or'.
* test-suite/tests/gc.test (Unused modules are removed): Use guardians
instead of `gc-live-object-stats'. Explain failure (FIXME).
* ice-9/boot-9.scm (make-module): Add `FIXME' about circular reference.
git-archimport-id: lcourtes@laas.fr--2006-libre/guile-core--boehm-gc--0--patch-9
* libguile/threads.c (on_thread_exit): Add caveat about possible
segfault.
git-archimport-id: lcourtes@laas.fr--2006-libre/guile-core--boehm-gc--0--patch-8
* libguile/gc-malloc.c (scm_gc_malloc): Pass a non-zero size to
`GC_MALLOC ()' when SIZE is zero.
git-archimport-id: lcourtes@laas.fr--2006-libre/guile-core--boehm-gc--0--patch-2
* libguile/gc.c (protected_obj_count): Made `static'.
(scm_heap_size): Mapped to `heap-size' rather than `cell-heap-size'.
(scm_heap_free_size): New.
(scm_heap_total_allocated): New.
(scm_gc_stats): Rewritten. Return the (little) information available
from `libgc'.
(scm_gc_disable): New.
(scm_gc_enable): New.
(scm_storage_prehistory): Don't call `GC_add_roots ()' with
SCM_SYS_PROTECTS. Use `GC_is_visible ()' to check whether
SCM_SYS_PROTECTS is visible.
* libguile/gc.h (scm_gc_enable): New declaration.
(scm_gc_disable): New declaration.
(scm_gc_for_alloc): Removed.
(scm_gc_for_newcell): Removed.
git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-46
* libguile/symbols.c (lookup_interned_symbol): When a deleted weak pair
is encountered, remove it and update the hashtable's item count. Also,
check the hash table threshold and trigger a rehashing if needed.
(scm_i_c_mem2symbol): Allocate CELL using `scm_weak_car_pair ()' rather
than `scm_cons ()'.
(scm_i_mem2symbol): Likewise.
(scm_symbols_prehistory): Don't invoke `scm_permanent_object ()' for
SYMBOLS.
git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-44