HCoop
/
bpt
/
emacs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge from emacs-24; up to 2012-12-06T01:39:03Z!monnier@iro.umontreal.ca
[bpt/emacs.git]
/
src
/
bytecode.c
diff --git
a/src/bytecode.c
b/src/bytecode.c
index
5ac8b4f
..
bd8abe8
100644
(file)
--- a/
src/bytecode.c
+++ b/
src/bytecode.c
@@
-1,5
+1,6
@@
/* Execution of byte code produced by bytecomp.el.
/* Execution of byte code produced by bytecomp.el.
- Copyright (C) 1985-1988, 1993, 2000-2012 Free Software Foundation, Inc.
+ Copyright (C) 1985-1988, 1993, 2000-2013 Free Software Foundation,
+ Inc.
This file is part of GNU Emacs.
This file is part of GNU Emacs.
@@
-33,7
+34,7
@@
by Hallvard:
*/
#include <config.h>
*/
#include <config.h>
-#include <setjmp.h>
+
#include "lisp.h"
#include "character.h"
#include "buffer.h"
#include "lisp.h"
#include "character.h"
#include "buffer.h"
@@
-87,8
+88,6
@@
Lisp_Object Qbyte_code_meter;
#endif /* BYTE_CODE_METER */
\f
#endif /* BYTE_CODE_METER */
\f
-Lisp_Object Qbytecode;
-
/* Byte codes: */
#define BYTE_CODES \
/* Byte codes: */
#define BYTE_CODES \
@@
-435,7
+434,7
@@
unmark_byte_stack (void)
#ifdef BYTE_CODE_SAFE
#define CHECK_RANGE(ARG) \
#ifdef BYTE_CODE_SAFE
#define CHECK_RANGE(ARG) \
- if (ARG >= bytestr_length) abort ()
+ if (ARG >= bytestr_length)
emacs_
abort ()
#else /* not BYTE_CODE_SAFE */
#else /* not BYTE_CODE_SAFE */
@@
-458,7
+457,8
@@
unmark_byte_stack (void)
Fsignal (Qquit, Qnil); \
AFTER_POTENTIAL_GC (); \
} \
Fsignal (Qquit, Qnil); \
AFTER_POTENTIAL_GC (); \
} \
- ELSE_PENDING_SIGNALS \
+ else if (pending_signals) \
+ process_pending_signals (); \
} while (0)
} while (0)
@@
-508,7
+508,7
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
if (FRAME_X_P (f)
&& FRAME_FONT (f)->direction != 0
&& FRAME_FONT (f)->direction != 1)
if (FRAME_X_P (f)
&& FRAME_FONT (f)->direction != 0
&& FRAME_FONT (f)->direction != 1)
- abort ();
+
emacs_
abort ();
}
#endif
}
#endif
@@
-553,7
+553,7
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
if (INTEGERP (args_template))
{
ptrdiff_t at = XINT (args_template);
if (INTEGERP (args_template))
{
ptrdiff_t at = XINT (args_template);
-
int rest = at & 128
;
+
bool rest = (at & 128) != 0
;
int mandatory = at & 127;
ptrdiff_t nonrest = at >> 8;
eassert (mandatory <= nonrest);
int mandatory = at & 127;
ptrdiff_t nonrest = at >> 8;
eassert (mandatory <= nonrest);
@@
-600,9
+600,9
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
{
#ifdef BYTE_CODE_SAFE
if (top > stacke)
{
#ifdef BYTE_CODE_SAFE
if (top > stacke)
- abort ();
+
emacs_
abort ();
else if (top < stack.bottom - 1)
else if (top < stack.bottom - 1)
- abort ();
+
emacs_
abort ();
#endif
#ifdef BYTE_CODE_METER
#endif
#ifdef BYTE_CODE_METER
@@
-1051,7
+1051,7
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
CASE (Bsave_current_buffer): /* Obsolete since ??. */
CASE (Bsave_current_buffer_1):
CASE (Bsave_current_buffer): /* Obsolete since ??. */
CASE (Bsave_current_buffer_1):
- record_unwind_
protect (set_buffer_if_live, Fcurrent_buffer ()
);
+ record_unwind_
current_buffer (
);
NEXT;
CASE (Bsave_window_excursion): /* Obsolete since 24.1. */
NEXT;
CASE (Bsave_window_excursion): /* Obsolete since 24.1. */
@@
-1578,7
+1578,9
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
NEXT;
CASE (Binteractive_p): /* Obsolete since 24.1. */
NEXT;
CASE (Binteractive_p): /* Obsolete since 24.1. */
- PUSH (Finteractive_p ());
+ BEFORE_POTENTIAL_GC ();
+ PUSH (call0 (intern ("interactive-p")));
+ AFTER_POTENTIAL_GC ();
NEXT;
CASE (Bforward_char):
NEXT;
CASE (Bforward_char):
@@
-1875,7
+1877,7
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
/* Actually this is Bstack_ref with offset 0, but we use Bdup
for that instead. */
/* CASE (Bstack_ref): */
/* Actually this is Bstack_ref with offset 0, but we use Bdup
for that instead. */
/* CASE (Bstack_ref): */
-
abort (
);
+
error ("Invalid byte opcode"
);
/* Handy byte-codes for lexical binding. */
CASE (Bstack_ref1):
/* Handy byte-codes for lexical binding. */
CASE (Bstack_ref1):
@@
-1928,11
+1930,11
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
#ifdef BYTE_CODE_SAFE
if (op < Bconstant)
{
#ifdef BYTE_CODE_SAFE
if (op < Bconstant)
{
- abort ();
+
emacs_
abort ();
}
if ((op -= Bconstant) >= const_length)
{
}
if ((op -= Bconstant) >= const_length)
{
- abort ();
+
emacs_
abort ();
}
PUSH (vectorp[op]);
#else
}
PUSH (vectorp[op]);
#else
@@
-1951,7
+1953,7
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
#ifdef BYTE_CODE_SAFE
error ("binding stack not balanced (serious byte compiler bug)");
#else
#ifdef BYTE_CODE_SAFE
error ("binding stack not balanced (serious byte compiler bug)");
#else
- abort ();
+
emacs_
abort ();
#endif
return result;
#endif
return result;
@@
-1960,8
+1962,6
@@
exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
void
syms_of_bytecode (void)
{
void
syms_of_bytecode (void)
{
- DEFSYM (Qbytecode, "byte-code");
-
defsubr (&Sbyte_code);
#ifdef BYTE_CODE_METER
defsubr (&Sbyte_code);
#ifdef BYTE_CODE_METER