[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile/guile-core/libguile ChangeLog eval.c
From: |
Dirk Herrmann |
Subject: |
guile/guile-core/libguile ChangeLog eval.c |
Date: |
Mon, 22 Jan 2001 05:32:08 -0800 |
CVSROOT: /cvs
Module name: guile
Changes by: Dirk Herrmann <address@hidden> 01/01/22 05:32:08
Modified files:
guile-core/libguile: ChangeLog eval.c
Log message:
* Move all real functionality from scm_eval into inner_eval.
* Avoid to copy the evaluated expression twice.
CVSWeb URLs:
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/ChangeLog.diff?r1=1.1239&r2=1.1240
http://subversions.gnu.org/cgi-bin/cvsweb/guile/guile-core/libguile/eval.c.diff?r1=1.189&r2=1.190
Patches:
Index: guile/guile-core/libguile/ChangeLog
diff -u guile/guile-core/libguile/ChangeLog:1.1239
guile/guile-core/libguile/ChangeLog:1.1240
--- guile/guile-core/libguile/ChangeLog:1.1239 Fri Jan 19 09:16:52 2001
+++ guile/guile-core/libguile/ChangeLog Mon Jan 22 05:32:07 2001
@@ -1,3 +1,9 @@
+2001-01-22 Dirk Herrmann <address@hidden>
+
+ * eval.c (inner_eval, scm_eval): Move all real functionality into
+ inner_eval. Avoid to copy the expression twice by inlining some
+ code from scm_i_eval.
+
2001-01-19 Dirk Herrmann <address@hidden>
* eval.c (scm_m_case): The 'else' clause of a 'case' statement
Index: guile/guile-core/libguile/eval.c
diff -u guile/guile-core/libguile/eval.c:1.189
guile/guile-core/libguile/eval.c:1.190
--- guile/guile-core/libguile/eval.c:1.189 Fri Jan 19 09:16:52 2001
+++ guile/guile-core/libguile/eval.c Mon Jan 22 05:32:08 2001
@@ -3827,8 +3827,13 @@
SCM pair = SCM_PACK (data);
SCM exp = SCM_CAR (pair);
SCM env = SCM_CDR (pair);
- SCM result = scm_i_eval (exp, env);
- return result;
+ SCM transformer = scm_fluid_ref (SCM_CDR (scm_system_transformer));
+
+ exp = scm_copy_tree (exp);
+ if (SCM_NIMP (transformer))
+ exp = scm_apply (transformer, exp, scm_listofnull);
+
+ return SCM_XEVAL (exp, env);
}
@@ -3849,17 +3854,15 @@
"environment given by @var{environment specifier}.")
#define FUNC_NAME s_scm_eval
{
- SCM copied_exp;
SCM env_closure;
SCM_VALIDATE_MODULE (2, environment);
- copied_exp = scm_copy_tree (exp);
env_closure = scm_top_level_env (SCM_MODULE_EVAL_CLOSURE (environment));
return scm_internal_dynamic_wind
(change_environment, inner_eval, restore_environment,
- (void *) SCM_UNPACK (scm_cons (copied_exp, env_closure)),
+ (void *) SCM_UNPACK (scm_cons (exp, env_closure)),
(void *) SCM_UNPACK (scm_cons (environment, SCM_BOOL_F)));
}
#undef FUNC_NAME
- guile/guile-core/libguile ChangeLog eval.c,
Dirk Herrmann <=