(scm_get_stack_base): separate result initialization from
declaration to slience warnings with macosx and hp-ux using gcc
3.3. Thanks to Andreas Vögele.
copy lists that are known to be finite (though not necessarily
proper).
* debug.c (scm_procedure_source): Don't have scm_unmemocopy treat
a closure's argument list like an expression of a body.
* eval.c (unmemoize_expression, unmemoize_exprs, unmemoize_and,
unmemoize_begin, unmemoize_case, unmemoize_cond, unmemoize_delay,
unmemoize_do, unmemoize_if, unmemoize_lambda, unmemoize_let,
unmemoize_letrec, unmemoize_letstar, unmemoize_or,
unmemoize_set_x, unmemoize_apply, unmemoize_atcall_cc,
unmemoize_at_call_with_values, unmemoize_future, sym_atslot_ref,
unmemoize_atslot_ref, sym_atslot_set_x, unmemoize_atslot_set_x,
unmemoize_builtin_macro): New static functions and symbols.
(scm_unmemocopy): Rewritten in terms of the above. scm_unmemocopy
now has a slightly different meaning: The memoized form that is
receives as its argument is now interpreted as a sequence of
expressions from a body.
(unmemocar, scm_unmemocar): Since the whole functionality of
unmemocar and scm_unmemocar is not needed any more, scm_unmemocar
has its old content back and is deprecated, while unmemocar has
been removed.
(SCM_BIT7): Removed.
(CEVAL): For unmemoizing a single expression, call
unmemoize_expression instead of scm_unmemocopy, which now expects
a sequence of body expressions. Eliminated unnecessary empty
environment frame when executing let* forms. Eliminated
unmemoization step from evaluator.
macroexp and made static. Added new version of scm_macroexp that
emits a deprecation warning and then calls macroexp.
(scm_m_undefine): Issue deprecation warning.
preceed their first usage. Include and define deprecated stuff
late in the file to have a better change of detecting accidental
uses of deprecated definitions. Further, unified the layout a
little and grouped definitions more cleanly into topics.
of resolve-module so that only the exported bindings are searched.
(save-value-history): Export the newly defined variable. Reported
by Wolfgang Jaehrling.
misplaced syntactic keywords. This will not work unless guile's
defmacro feature is deprecated.
(scm_m_case): Fixed a bug that caused the list of labels to grow
with every case form.
(scm_m_quote, scm_m_atslot_ref, SCM_CEVAL): Changed the byte code
representation of 'quote' and '@slot-ref' to an improper list.
This reduces execution time, the number of cells used to hold the
memoized code, and thus also reduces garbage collection time.
(scm_unmemocopy): Use unmemoize_quote for quote expressions.
(SCM_CEVAL): Changed macro handling to also work with macros that
return improper lists. Added an assertion, that the code returned
by a macro transformer will not lead to cycles in the memoized
code.
file.
* eval.c (scm_ilookup, scm_unbound_variable_key,
error_unbound_variable, scm_lookupcar1, scm_lookupcar): Moved to
the definitions used for execution, since that's where they will
belong to later.
throughout guile, has not been part of an official release yet,
and the concept of sloppy predicates has never been a good idea.
(SCM_FRACTION_NUMERATOR, SCM_FRACTION_DENOMINATOR,
SCM_FRACTION_SET_NUMERATOR, SCM_FRACTION_SET_DENOMINATOR):
Simplified.
explicit what happens.
* guardians.c (TCONC_IN): Use SCM_SET_CELL_OBJECT_x rather than
SCM_SET_CELL_WORD_x when writing scheme objets to cell elements.