emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs-25 e9916d8: Revert some recent emacs-module commenta


From: Paul Eggert
Subject: [Emacs-diffs] emacs-25 e9916d8: Revert some recent emacs-module commentary
Date: Mon, 21 Dec 2015 01:45:27 +0000

branch: emacs-25
commit e9916d8880561cc06b6cb73bafe7257b93ffbf4c
Author: Paul Eggert <address@hidden>
Commit: Paul Eggert <address@hidden>

    Revert some recent emacs-module commentary
    
    Most of the recently-added commentary was incorrect, due to the
    possibility of stack overflow.
---
 src/emacs-module.c |   11 ++++-------
 src/lisp.h         |   13 +------------
 2 files changed, 5 insertions(+), 19 deletions(-)

diff --git a/src/emacs-module.c b/src/emacs-module.c
index 5d1b4dc..dca8349 100644
--- a/src/emacs-module.c
+++ b/src/emacs-module.c
@@ -86,7 +86,7 @@ struct emacs_env_private
 struct emacs_runtime_private
 {
   /* FIXME: Ideally, we would just define "struct emacs_runtime_private"
-   * as a synonym of "emacs_env", but I don't know how to do that in C.  */
+     as a synonym of "emacs_env", but I don't know how to do that in C.  */
   emacs_env pub;
 };
 
@@ -325,8 +325,7 @@ module_non_local_exit_get (emacs_env *env, emacs_value 
*sym, emacs_value *data)
   struct emacs_env_private *p = env->private_members;
   if (p->pending_non_local_exit != emacs_funcall_exit_return)
     {
-      /* FIXME: We cannot call lisp_to_value here because that can
-         exit non-locally.  */
+      /* FIXME: lisp_to_value can exit non-locally.  */
       *sym = lisp_to_value (p->non_local_exit_symbol);
       *data = lisp_to_value (p->non_local_exit_data);
     }
@@ -436,7 +435,6 @@ module_is_not_nil (emacs_env *env, emacs_value value)
   check_main_thread ();
   if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
     return false;
-  /* Assume that NILP never exits non-locally.  */
   return ! NILP (value_to_lisp (value));
 }
 
@@ -446,7 +444,6 @@ module_eq (emacs_env *env, emacs_value a, emacs_value b)
   check_main_thread ();
   if (module_non_local_exit_check (env) != emacs_funcall_exit_return)
     return false;
-  /* Assume that EQ never exits non-locally.  */
   return EQ (value_to_lisp (a), value_to_lisp (b));
 }
 
@@ -893,7 +890,7 @@ value_to_lisp_bits (emacs_value v)
 }
 
 /* If V was computed from lisp_to_value (O), then return O.
-   Must never fail or exit non-locally.  */
+   Exits non-locally only if the stack overflows.  */
 static Lisp_Object
 value_to_lisp (emacs_value v)
 {
@@ -923,7 +920,7 @@ enum { HAVE_STRUCT_ATTRIBUTE_ALIGNED = 0 };
 #endif
 
 /* Convert O to an emacs_value.  Allocate storage if needed; this can
-   signal if memory is exhausted.  Must be injective.  */
+   signal if memory is exhausted.  Must be an injective function.  */
 static emacs_value
 lisp_to_value (Lisp_Object o)
 {
diff --git a/src/lisp.h b/src/lisp.h
index bcac4b6..995760a 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -329,15 +329,11 @@ error !;
 #define lisp_h_CHECK_TYPE(ok, predicate, x) \
    ((ok) ? (void) 0 : (void) wrong_type_argument (predicate, x))
 #define lisp_h_CONSP(x) (XTYPE (x) == Lisp_Cons)
-/* lisp_h_EQ must never exit non-locally; emacs-module.c relies on
-   that.  */
 #define lisp_h_EQ(x, y) (XLI (x) == XLI (y))
 #define lisp_h_FLOATP(x) (XTYPE (x) == Lisp_Float)
 #define lisp_h_INTEGERP(x) ((XTYPE (x) & (Lisp_Int0 | ~Lisp_Int1)) == 
Lisp_Int0)
 #define lisp_h_MARKERP(x) (MISCP (x) && XMISCTYPE (x) == Lisp_Misc_Marker)
 #define lisp_h_MISCP(x) (XTYPE (x) == Lisp_Misc)
-/* lisp_h_NILP must never exit non-locally; emacs-module.c relies on
-   that.  */
 #define lisp_h_NILP(x) EQ (x, Qnil)
 #define lisp_h_SET_SYMBOL_VAL(sym, v) \
    (eassert ((sym)->redirect == SYMBOL_PLAINVAL), (sym)->val.value = (v))
@@ -386,14 +382,11 @@ error !;
 # define CHECK_SYMBOL(x) lisp_h_CHECK_SYMBOL (x)
 # define CHECK_TYPE(ok, predicate, x) lisp_h_CHECK_TYPE (ok, predicate, x)
 # define CONSP(x) lisp_h_CONSP (x)
-/* EQ must never exit non-locally; emacs-module.c relies on that.  */
 # define EQ(x, y) lisp_h_EQ (x, y)
 # define FLOATP(x) lisp_h_FLOATP (x)
 # define INTEGERP(x) lisp_h_INTEGERP (x)
 # define MARKERP(x) lisp_h_MARKERP (x)
 # define MISCP(x) lisp_h_MISCP (x)
-/* NILP must never exit non-locally; emacs-module.c relies on
-   that.  */
 # define NILP(x) lisp_h_NILP (x)
 # define SET_SYMBOL_VAL(sym, v) lisp_h_SET_SYMBOL_VAL (sym, v)
 # define SYMBOL_CONSTANT_P(sym) lisp_h_SYMBOL_CONSTANT_P (sym)
@@ -995,8 +988,7 @@ make_natnum (EMACS_INT n)
   return USE_LSB_TAG ? make_number (n) : XIL (n + (int0 << VALBITS));
 }
 
-/* Return true if X and Y are the same object.  Must never exit
-   non-locally; emacs-module.c relies on that.  */
+/* Return true if X and Y are the same object.  */
 
 INLINE bool
 (EQ) (Lisp_Object x, Lisp_Object y)
@@ -2573,9 +2565,6 @@ enum char_bits
 
 /* Data type checking.  */
 
-/* Checks whether X is null.  Must never exit non-locally;
-   emacs-module.c relies on that.  */
-
 INLINE bool
 (NILP) (Lisp_Object x)
 {



reply via email to

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