diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1999-08-29 03:29:03 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1999-08-29 03:29:03 +0000 |
commit | c5b738b5004030263de68e043ff31c81bdedf2ea (patch) | |
tree | 36d934f828a73fa178c04d51ecc07e6e467530fe | |
parent | a9571599e79feeeacd77bcb33eb6532058c8ae83 (diff) | |
download | guile-c5b738b5004030263de68e043ff31c81bdedf2ea.tar.gz |
*** empty log message ***
-rw-r--r-- | TODO | 13 | ||||
-rw-r--r-- | libguile/ChangeLog | 34 |
2 files changed, 47 insertions, 0 deletions
@@ -39,3 +39,16 @@ Low-level things * Use the SCM trick of tagging environments with immediates (see m_letrec1) to convert source correctly in unmemocopy. + + +Optimizations + +* Eliminate argument checking for closures. One way to do it is to + set the cdr of application forms to an immediate representing the + arity of the call. If the closure contains a corresponding + immediate, these can be matched against eachother. + +* Implement a thread-safe alternative to SCM's environment caches: + + Add an extra argument to SCM_CEVAL: "evaluation context". + Evaluation contexts contain a stack of locations. diff --git a/libguile/ChangeLog b/libguile/ChangeLog index bdd230672..b9742df60 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,5 +1,39 @@ 1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + Cleanup and simplification of generic method dispatch. + Also, the quadruple representation of entity and operator + procedures has been replaced with single. + + * tags.h (SCM_IM_HASH_DISPATCH): Removed. + + * print.c (scm_isymnames): Removed #@hash-dispatch. + + * objects.c, objects.h (scm_mcache_lookup_cmethod): Moved here + from eval.c; Support 0 arity methods. + (scm_set_object_procedure_x): Removed scm_sym_atdispatch; + (scm_apply_generic_env): Removed. + Replaced slots proc0-3 with procedure. + + * objects.h (SCM_OPERATOR_PROC_0, SCM_OPERATOR_PROC_1, + SCM_OPERATOR_PROC_2, SCM_OPERATOR_PROC_3): Replaced by + SCM_OPERATOR_PROCEDURE. + (SCM_ENTITY_PROC_0, SCM_ENTITY_PROC_1, SCM_ENTITY_PROC_2, + SCM_ENTITY_PROC_3): Replaced by SCM_ENTITY_PROCEDURE. + + * struct.c, struct.h: Replace 4 procedure slots with one. + (scm_struct_i_procedure): Replaces scm_struct_i_procedure. + + * gc.c (scm_gc_mark): Mark 1 procedure slot in entities instead of + 4. + + * eval.c (scm_sym_args): Removed. + (SCM_CEVAL): Simplified entity application. + Moved dispatch code to objects.c. + + * procprop.c (scm_i_procedure_arity): Bugfix: Handle generics. + +1999-08-29 Mikael Djurfeldt <mdj@thalamus.nada.kth.se> + * sort.c (closureless): Use scm_eval_body. * eval.c (SCM_APPLY): Fixed serious evaluator bug: If a closure |