From c5b738b5004030263de68e043ff31c81bdedf2ea Mon Sep 17 00:00:00 2001 From: Mikael Djurfeldt Date: Sun, 29 Aug 1999 03:29:03 +0000 Subject: [PATCH] *** empty log message *** --- TODO | 13 +++++++++++++ libguile/ChangeLog | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/TODO b/TODO index 5121a1c8f..ef9e807a1 100644 --- a/TODO +++ b/TODO @@ -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,3 +1,37 @@ +1999-08-29 Mikael Djurfeldt + + 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 * sort.c (closureless): Use scm_eval_body.