summaryrefslogtreecommitdiff
path: root/libguile/deprecated.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-11-27 20:36:09 +0100
committerAndy Wingo <wingo@pobox.com>2009-12-01 21:00:25 +0100
commita3e923770ef0e491b58aaac94413cba893eebcfc (patch)
tree7e536bb37d21ada66978ca3f1dcf99f883c17046 /libguile/deprecated.c
parent6c9e8a53542019d1d207f25bfb18fbba9aabf59d (diff)
downloadguile-a3e923770ef0e491b58aaac94413cba893eebcfc.tar.gz
formally deprecate trampolines
* libguile/eval.c: * libguile/deprecated.h: * libguile/deprecated.c (scm_trampoline_0, scm_trampoline_1) (scm_trampoline_2): Actually deprecate trampolines. * srfi/srfi-1.c: Fix all trampoline uses in srfi-1.c.
Diffstat (limited to 'libguile/deprecated.c')
-rw-r--r--libguile/deprecated.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/libguile/deprecated.c b/libguile/deprecated.c
index 058ebb73c..1f35d2a55 100644
--- a/libguile/deprecated.c
+++ b/libguile/deprecated.c
@@ -1573,6 +1573,45 @@ scm_gc_set_debug_check_freelist_x (SCM flag)
#endif
+/* Trampolines
+ *
+ * Trampolines were an intent to speed up calling the same Scheme procedure many
+ * times from C.
+ *
+ * However, this was the wrong thing to optimize; if you really know what you're
+ * calling, call its function directly, otherwise you're in Scheme-land, and we
+ * have many better tricks there (inlining, for example, which can remove the
+ * need for closures and free variables).
+ *
+ * Also, in the normal debugging case, trampolines were being computed but not
+ * used. Silliness.
+ */
+
+scm_t_trampoline_0
+scm_trampoline_0 (SCM proc)
+{
+ scm_c_issue_deprecation_warning
+ ("`scm_trampoline_0' is deprecated. Just use `scm_call_0' instead.");
+ return scm_call_0;
+}
+
+scm_t_trampoline_1
+scm_trampoline_1 (SCM proc)
+{
+ scm_c_issue_deprecation_warning
+ ("`scm_trampoline_1' is deprecated. Just use `scm_call_1' instead.");
+ return scm_call_1;
+}
+
+scm_t_trampoline_2
+scm_trampoline_2 (SCM proc)
+{
+ scm_c_issue_deprecation_warning
+ ("`scm_trampoline_2' is deprecated. Just use `scm_call_2' instead.");
+ return scm_call_2;
+}
+
+
void
scm_i_init_deprecated ()
{