guile-cvs
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]