(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.