*** empty log message ***
[bpt/emacs.git] / src / bytecode.c
index f3a07dc..d130b3b 100644 (file)
@@ -1,5 +1,5 @@
 /* Execution of byte code produced by bytecomp.el.
-   Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003
+   Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003, 2004
    Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
@@ -286,27 +286,13 @@ mark_byte_stack ()
         The culprit is found in the frame of Fbyte_code where the
         address of its local variable `stack' is equal to the
         recorded value of `stack' here.  */
-      if (!stack->top)
-       abort ();
+      eassert (stack->top);
 
       for (obj = stack->bottom; obj <= stack->top; ++obj)
-       if (!XMARKBIT (*obj))
-         {
-           mark_object (*obj);
-           XMARK (*obj);
-         }
-
-      if (!XMARKBIT (stack->byte_string))
-       {
-          mark_object (stack->byte_string);
-         XMARK (stack->byte_string);
-       }
+       mark_object (*obj);
 
-      if (!XMARKBIT (stack->constants))
-       {
-         mark_object (stack->constants);
-         XMARK (stack->constants);
-       }
+      mark_object (stack->byte_string);
+      mark_object (stack->constants);
     }
 }
 
@@ -318,16 +304,9 @@ void
 unmark_byte_stack ()
 {
   struct byte_stack *stack;
-  Lisp_Object *obj;
 
   for (stack = byte_stack_list; stack; stack = stack->next)
     {
-      for (obj = stack->bottom; obj <= stack->top; ++obj)
-       XUNMARK (*obj);
-
-      XUNMARK (stack->byte_string);
-      XUNMARK (stack->constants);
-
       if (stack->byte_string_start != SDATA (stack->byte_string))
        {
          int offset = stack->pc - stack->byte_string_start;
@@ -408,6 +387,7 @@ unmark_byte_stack ()
        Vquit_flag = Qnil;                              \
         BEFORE_POTENTIAL_GC ();                                \
        Fsignal (Qquit, Qnil);                          \
+       AFTER_POTENTIAL_GC ();                          \
       }                                                        \
   } while (0)
 
@@ -560,9 +540,7 @@ If the third argument is incorrect, Emacs may crash.  */)
              TOP = Qnil;
            else
              {
-               BEFORE_POTENTIAL_GC ();
-               Fcar (wrong_type_argument (Qlistp, v1));
-               AFTER_POTENTIAL_GC ();
+               wrong_type_argument (Qlistp, v1);
              }
            break;
          }
@@ -595,9 +573,7 @@ If the third argument is incorrect, Emacs may crash.  */)
              TOP = Qnil;
            else
              {
-               BEFORE_POTENTIAL_GC ();
-               Fcdr (wrong_type_argument (Qlistp, v1));
-               AFTER_POTENTIAL_GC ();
+               wrong_type_argument (Qlistp, v1);
              }
            break;
          }
@@ -876,10 +852,7 @@ If the third argument is incorrect, Emacs may crash.  */)
          }
 
        case Bunwind_protect:
-         /* The function record_unwind_protect can GC.  */
-         BEFORE_POTENTIAL_GC ();
          record_unwind_protect (Fprogn, POP);
-         AFTER_POTENTIAL_GC ();
          break;
 
        case Bcondition_case:
@@ -931,11 +904,7 @@ If the third argument is incorrect, Emacs may crash.  */)
                else if (!NILP (v1))
                  {
                    immediate_quit = 0;
-                   BEFORE_POTENTIAL_GC ();
-                   v1 = wrong_type_argument (Qlistp, v1);
-                   AFTER_POTENTIAL_GC ();
-                   immediate_quit = 1;
-                   op++;
+                   wrong_type_argument (Qlistp, v1);
                  }
              }
            immediate_quit = 0;
@@ -944,11 +913,7 @@ If the third argument is incorrect, Emacs may crash.  */)
            else if (NILP (v1))
              TOP = Qnil;
            else
-             {
-               BEFORE_POTENTIAL_GC ();
-               Fcar (wrong_type_argument (Qlistp, v1));
-               AFTER_POTENTIAL_GC ();
-             }
+             wrong_type_argument (Qlistp, v1);
            break;
          }
 
@@ -1585,11 +1550,7 @@ If the third argument is incorrect, Emacs may crash.  */)
                    else if (!NILP (v1))
                      {
                        immediate_quit = 0;
-                       BEFORE_POTENTIAL_GC ();
-                       v1 = wrong_type_argument (Qlistp, v1);
-                       AFTER_POTENTIAL_GC ();
-                       immediate_quit = 1;
-                       op++;
+                       wrong_type_argument (Qlistp, v1);
                      }
                  }
                immediate_quit = 0;
@@ -1598,11 +1559,7 @@ If the third argument is incorrect, Emacs may crash.  */)
                else if (NILP (v1))
                  TOP = Qnil;
                else
-                 {
-                   BEFORE_POTENTIAL_GC ();
-                   Fcar (wrong_type_argument (Qlistp, v1));
-                   AFTER_POTENTIAL_GC ();
-                 }
+                 wrong_type_argument (Qlistp, v1);
              }
            else
              {
@@ -1782,3 +1739,6 @@ integer, it is incremented each time that symbol's function is called.  */);
   }
 #endif
 }
+
+/* arch-tag: b9803b6f-1ed6-4190-8adf-33fd3a9d10e9
+   (do not change this comment) */