XEmacs 21.4.19 (Constant Variable).
[chise/xemacs-chise.git.1] / src / bytecode.c
index 8a2c963..fa6b469 100644 (file)
@@ -211,6 +211,7 @@ typedef enum Opcode Opcode;
 typedef unsigned char Opbyte;
 \f
 
+static void check_opcode (Opcode opcode);
 static void invalid_byte_code_error (char *error_message, ...);
 
 Lisp_Object * execute_rare_opcode (Lisp_Object *stack_ptr,
@@ -637,6 +638,7 @@ execute_optimized_program (const Opbyte *program,
        invalid_byte_code_error ("byte code stack overflow");
       if (stack_ptr < stack_beg)
        invalid_byte_code_error ("byte code stack underflow");
+      check_opcode (opcode);
 #endif
 
 #ifdef BYTE_CODE_METER
@@ -1474,7 +1476,7 @@ execute_rare_opcode (Lisp_Object *stack_ptr,
       }
 
     default:
-      abort();
+      ABORT();
       break;
     }
   return stack_ptr;
@@ -1857,7 +1859,7 @@ optimize_byte_code (/* in */
                break;
 
            default:
-             abort();
+             ABORT();
              break;
            }
        }
@@ -1891,7 +1893,8 @@ optimize_compiled_function (Lisp_Object compiled_function)
       program = alloca_array (Opbyte, 1 + 2 * XSTRING_LENGTH (f->instructions));
       optimize_byte_code (f->instructions, f->constants,
                          program, &program_length, &varbind_count);
-      f->specpdl_depth = XINT (Flength (f->arglist)) + varbind_count;
+      f->specpdl_depth = (unsigned short) (XINT (Flength (f->arglist)) +
+                                           varbind_count);
       f->instructions =
        make_opaque (program, program_length * sizeof (Opbyte));
     }
@@ -2355,7 +2358,7 @@ If the byte code for compiled function FUNCTION is lazy-loaded, fetch it now.
       f->constants    = XCDR (tem);
       return function;
     }
-  abort ();
+  ABORT ();
   return Qnil; /* not reached */
 }