/* Execution of byte code produced by bytecomp.el.
- Copyright (C) 1985-1988, 1993, 2000-2014 Free Software Foundation,
+ Copyright (C) 1985-1988, 1993, 2000-2015 Free Software Foundation,
Inc.
This file is part of GNU Emacs.
#include <config.h>
#include "lisp.h"
+#include "blockinput.h"
#include "character.h"
#include "buffer.h"
+#include "keyboard.h"
#include "syntax.h"
#include "window.h"
\f
#ifdef BYTE_CODE_METER
-Lisp_Object Qbyte_code_meter;
#define METER_2(code1, code2) AREF (AREF (Vbyte_code_meter, code1), code2)
#define METER_1(code) METER_2 (0, code)
Bscan_buffer = 0153, /* No longer generated as of v18. */
Bset_mark = 0163, /* this loser is no longer generated as of v18 */
#endif
-
- B__dummy__ = 0 /* Pacify C89. */
};
/* Whether to maintain a `top' and `bottom' field in the stack frame. */
\f
/* Fetch the next byte from the bytecode stream. */
+#ifdef BYTE_CODE_SAFE
+#define FETCH (eassert (stack.byte_string_start == SDATA (stack.byte_string)), *stack.pc++)
+#else
#define FETCH *stack.pc++
+#endif
/* Fetch two bytes from the bytecode stream and make a 16-bit number
out of them. */
goto pushhandler;
CASE (Bpushconditioncase): /* New in 24.4. */
{
- extern EMACS_INT lisp_eval_depth;
- extern int poll_suppress_count;
- extern int interrupt_input_blocked;
struct handler *c;
Lisp_Object tag;
int dest;
/* Actually this is Bstack_ref with offset 0, but we use Bdup
for that instead. */
/* CASE (Bstack_ref): */
- call3 (intern ("error"),
- build_string ("Invalid byte opcode: op=%s, ptr=%d"),
- make_number (op),
- make_number ((stack.pc - 1) - stack.byte_string_start));
+ call3 (Qerror,
+ build_string ("Invalid byte opcode: op=%s, ptr=%d"),
+ make_number (op),
+ make_number ((stack.pc - 1) - stack.byte_string_start));
/* Handy byte-codes for lexical binding. */
CASE (Bstack_ref1):