* *.c: add space after commas everywhere.
* *.c: use SCM_VECTOR_SET everywhere, where a vector is written.
Document cases where SCM_WRITABLE_VELTS() is used.
* vectors.h (SCM_VELTS): prepare for write barrier, and let
SCM_VELTS() return a const pointer
(SCM_VECTOR_SET): add macro.
* autogen.sh (mscripts): find and check version number of
autoconf. Complain if 2.53 is not found.
scm_sym_macro, scm_macro_type), macros.h (scm_makmacro):
Deprecated the special kind of built-in dynamic syntax transformer
that was inaccurately named "macro". Note: The built-in syntax
transformers that are named "mmacro" or "memoizing-macro" still
exist, and it is these which come much closer to what one would
call a macro.
SCM_CEVAL): Removed compile time option SCM_CAUTIOUS to clean up
the code. Full number of arguments checking of closures is
mandatory now. However, the option to disable the checking has
most probably not been used anyway.
(scm_lookupcar, scm_lookupcar1, scm_badargsp, SCM_CEVAL,
SCM_APPLY, scm_map, scm_for_each), feature.c (scm_init_feature),
gsubr.c (scm_gsubr_apply), numbers.c (scm_logand, scm_logior,
scm_logxor, scm_i_dbl2big), srcprop.c (scm_source_properties,
scm_set_source_properties_x, scm_source_property): Removed
compile time option SCM_RECKLESS to clean up the code. Full
number of arguments checking of closures is mandatory now.
However, the option to disable the checking has most probably not
been used anyway.
* srcprop.c (scm_source_properties, scm_set_source_properties_x,
scm_source_property): Use !SCM_CONSP instead of SCM_NCONSP.
MEMOIZE_LOCALS to clean up the code. Now, caching of local
variable positions during memoization is mandatory. However, the
option to disable the caching has most probably not been used
anyway.
function, replaces macro SRCBRKP.
(SRCBRKP): Deprecated.
* eval.c (SCM_CEVAL): Replaced use of SRCBRKP by call to
scm_c_source_property_breakpoint_p. Removed some use of arg1 as
temporary variable.
(SCM_CEVAL): Minimized scope of variable orig_sym. Eliminated
goto-labels cdrxnoap, cdrxbegin and nontoplevel_cdrxnoap. Changed
argument checking order for set! to locals, variables and symbols.
Improvements to control structure. Removed some uses of arg1 and
arg2 as temporary variables.
'slot-set!' and 'nil-cond'. Removed some uses of t.arg1, arg2 and
proc as temporary variables. Introduced temporary variables with
hopefully descriptive names for clarification. Replaced SCM_N?IMP
by a more explicit predicate in some places.
Added lots of comments regarding the implementation of #@dispatch.
Changed intra-procedure communication to use t.arg1 instead of
arg2. Removed some uses of t.arg1, t.lloc and proc as temporary
variables. Introduced temporary variables with hopefully
descriptive names for clarification. Replaced SCM_N?IMP by a more
explicit predicate in some places. Use SCM_INSTANCE_HASH instead
of computing the expression explicitly. Eliminate now unused
label nontoplevel_cdrxbegin.
* goops.h (SCM_INSTANCE_HASH): New macro.
* objects.h (SCM_CMETHOD_FORMALS, SCM_CMETHOD_BODY): New macros.
side-effecting operations from conditions and macro calls.
Replaced SCM_N?IMP by a more explicit predicate in some places.
Minimized the scope of some variables.
'letrec' and 'set*': Removed some uses of t.arg1, t.lloc and proc
as temporary variables. Removed side-effecting operations from
conditions and macro calls. Introduced temporary variables with
hopefully descriptive names for clarification. Replaced SCM_N?IMP
by a more explicit predicate in some places. Removed code that
was conditionally compiled if SICP was defined - which it never
is.
Removed some uses of t.arg1 and proc as temporary variables.
Removed side-effecting operations from conditions and macro calls.
Introduced temporary variables with hopefully descriptive names
for clarification. Replaced SCM_N?IMP by a more explicit
predicate in some places.
explicit predicate in some places.
(CHECK_EQVISH): Removed.
(SCM_CEVAL): Removed some uses of t.arg1 and proc as temporary
variables. Removed side-effecting operations from conditions and
macro calls. Introduced temporary variables for clarification.
Sorted if-else-if check for the type of the last form in a list by
frequency. Avoided some unnecessary tail-recursion calls.
comments.
(scm_deval_args, deval_args): Renamed scm_deval_args to
deval_args, since it is not part of the interface.
(SCM_CEVAL): Added (maybe somewhat verbose) comment. Avoid to
use references to debug.vect[0] before it exists. Add parentheses
to switch statement.
* goops.h: Added local emacs variables.
* srcprop.c (scm_source_property): Remove redundant SCM_IMP
test.
* strings.c (scm_c_string2str): Clarified comment. Replaced
THINKME by FIXME for uniformness. Removed question about whether
arguments need to be protected from garbage collection: Arguments
must be protected as any other variable.
(scm_unmemocar): Use !SCM_CONSP instead of SCM_IMP.
Minimize scope of local variable. Eliminate dependency on
macro DEBUG_EXTENSIONS.
(s_splicing): New error message string.
(scm_m_body): Issue 'bad body' message rather than 'missing
expression' message.
(scm_m_quote): Eliminate unnecessary copying.
(scm_m_lambda, scm_m_letstar, scm_m_letrec, scm_m_let): Leave the
checking of the body to scm_m_body.
(scm_m_do): Move comment to function header. Rename arg1 to
binding. Made the code a bit easier to read.
(evalcar): Removed.
(iqq): Added a comment. Changed the depth parameter to
unsigned. Use size_t for vector lengths. Make sure vector object
is gc protected as long as its contents are read. Add some syntax
checks. Get rid of unnecessary SCM_IMP test. Clean up the
control structure a bit.
(scm_m_delay): Added comment about the implementation of
scm_m_delay.
(scm_m_define): Add comment about guile's currying define
syntax. Renamed 'proc' to 'name'. Eliminate dependency on macro
DEBUG_EXTENSIONS. Simplified code a bit. Eliminate SICP code.
(scm_m_letrec1): Removed. Part of the functionality is taken
over by the new function 'transform_bindings'.
(transform_bindings): New function. Takes over some of the
functionality of removed function 'scm_m_letrec1', namely to split
a list of bindings into a reversed list of variables and a list of
initializers.
(scm_m_letrec): Call 'transform_bindings'.
(scm_m_let): Minimized scope of local variables. Renamed 'proc'
to 'temp' and 'arg1' to 'binding'. Eliminated redundant SCM_NIMP
test. Use 'transform_bindings'. Fixed scoping error with named
let (Thanks to Aubrey Jaffer for reporting the bug and to Neil
Jerram for suggesting the fix). Cleaned up the control structure
a bit.
(scm_m_expand_body): Use 'transform_bindings'. Eliminated
unnecessary consing. Eliminated unnecessary
SCM_DEFER/ALLOW_INTS.
(SCM_CEVAL): Un-obfuscated some loops.
scm_m_define, scm_m_letrec1, scm_m_let, scm_m_expand_body,
scm_macroexp, unmemocopy, scm_eval_args, scm_deval_args,
SCM_CEVAL, scm_map, scm_init_eval): When building lists, prefer
scm_list_<n> over scm_cons[2]?.
(scm_unmemocar, scm_m_cond, scm_m_letstar, scm_m_letrec1,
scm_m_let, scm_m_atbind, unmemocopy, SCM_CEVAL, SCM_APPLY): Use
SCM_C[AD][AD]R instead of explicit form.
(scm_m_set_x, scm_m_cond, scm_m_letstar, scm_m_do): Reordered
comparison parameters.
(scm_m_case, scm_m_cond, scm_m_letstar, scm_m_do, SCM_CEVAL): Use
!SCM_NULLP instead of SCM_NIMP.
(scm_m_case): Don't copy the form. Renamed proc to clause and
minimized its scope. Renamed x to clauses. Removed side
effecting operation from macro call.
(scm_m_cond): Don't copy the form. Renamed arg1 to clause and
minimized its scope. Renamed x to clauses. Minimized the scope
of variable 'len'. Make sure the else clause is treated specially
even in case of '=>' occurences. Don't change the else to #t in
order to be able to distinguish this case in the evaluator. Leave
type checking of the recipient to the evaluator.
(scm_c_improper_memq): Made the comment somewhat clearer.
(scm_m_lambda): Renamed proc to formals. Removed unnecessary
test for SCM_IM_LET at the place of the formal parameters.
Simplified the formal parameter checking.
(scm_m_letstar): Added Comment. Renamed proc to bindings.
Renamed arg1 to binding and minimized its scope. Eliminated
unnecessary consing.
(scm_m_do): Renamed proc to bindings. Minimized the scope of
variable 'len'.
(build_binding_list): New static function.
(unmemocopy): Don't use SCM_TYP7 on pairs (it's unclean).
Further, split up the 'letrec' unmemoizing code to the
corresponding parts for 'do', 'let' and 'letrec', adding comments
to each form. Cleanup the handling of the do form (This removes
some *real* code :-).
(SCM_CEVAL): Removed side effecting operation from macro call.
Handle the 'else clause of the 'cond form specially - the symbol
'else is not replaced with #t any more.
(scm_tc3_cons_gloc): Renamed to scm_tc3_struct. Changed all uses.
(scm_tcs_cons_gloc): Renamed to scm_tcs_struct. Changed all uses.
(SCM_ECONSP, SCM_NECONSP): Removed. Changed all uses to SCM_CONSP
or SCM_NCONSP, respectively.
* struct.c, struct.h, srcprop.c, procs.c, procprop.c, print.c,
objects.c. modules.c, goops.c, eval.c, debug.c: Changed all uses
of scm_tc3_cond_gloc and scm_tcs_cons_gloc. See above.
* print.c (scm_iprin1): Remove printing of glocs. Do not try to
tell glocs from structs.
* gc.c (scm_gc_mark, scm_gc_sweep): Remove handling of glocs.
* eval.c (scm_m_atbind): Make a list of variables, not glocs.
(scm_ceval, scm_deval): For SCM_IM_BIND, fiddle with variables
instead of with glocs.
(EVALCAR): Do not test for glocs.
(scm_lookupcar, scm_lookupcar1): Do not handle glocs in race
condition.
(scm_unmemocar): Do not handle glocs.
(scm_m_atfop): Memoize as a variable, not as a gloc.
(scm_eval_args, scm_deval_args): Do not handle glocs.
(scm_ceval, scm_deval): Likewise.
* eval.h (SCM_XEVALCAR): Do not test for glocs.
(SCM_GLOC_VAR, SCM_GLOC_VAL, SCM_GLOC_SET_VAL, SCM_GLOC_VAL_LOC):
Removed.
* debug.h, debug.c (scm_make_gloc, scm_gloc_p): Removed.
* dynwind.c (scm_swap_bindings): Likewise.
(scm_dowinds): Updated to recognize lists of variables instead of
lists of glocs.
* __scm.h (SCM_CAUTIOS, SCM_RECKLESS): Update comments.
(scm_lookupcar): Handle variables in lost races. Replace symbol
with variable directly, do not make a gloc.
(scm_unmemocar): Rewrite variables using a reverse lookup, just
like glocs.
(scm_ceval, scm_deval): Deal with variables in SCM_IM_SET and in
the main switch.
* guile-snarf-docs.in, guile-snarf-docs-texi.in: rewrite &
simplify.
* eval.c: all hash signs are in column 0.
* Makefile.am (guile_filter_doc_snarfage): build using
c-tokenize.c, not filter-doc-snarfage.c.
rearrange snarfing dependencies a bit.
* c-tokenize.lex: new file.