summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikael Djurfeldt <djurfeldt@nada.kth.se>1999-08-29 03:29:03 +0000
committerMikael Djurfeldt <djurfeldt@nada.kth.se>1999-08-29 03:29:03 +0000
commitc5b738b5004030263de68e043ff31c81bdedf2ea (patch)
tree36d934f828a73fa178c04d51ecc07e6e467530fe
parenta9571599e79feeeacd77bcb33eb6532058c8ae83 (diff)
downloadguile-c5b738b5004030263de68e043ff31c81bdedf2ea.tar.gz
*** empty log message ***
-rw-r--r--TODO13
-rw-r--r--libguile/ChangeLog34
2 files changed, 47 insertions, 0 deletions
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,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