summaryrefslogtreecommitdiff
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorMiles Bader <miles@gnu.org>2006-01-16 08:37:27 +0000
committerMiles Bader <miles@gnu.org>2006-01-16 08:37:27 +0000
commit41882805d6711e32ac0f066119226d84dbdedc13 (patch)
tree44f756cef3fbc4de2f229e93613a1a326da7f55d /src/bytecode.c
parent6a2bd1a5019d2130c87ac5cf17f1322bf614b624 (diff)
parent28f74fdf77eaab2e9daf54e2d5b0b729c5201e4f (diff)
downloademacs-41882805d6711e32ac0f066119226d84dbdedc13.tar.gz
emacs-41882805d6711e32ac0f066119226d84dbdedc13.tar.bz2
emacs-41882805d6711e32ac0f066119226d84dbdedc13.zip
Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-97
Merge from emacs--cvs-trunk--0 Patches applied: * emacs--cvs-trunk--0 (patch 616-696) - Add lisp/mh-e/.arch-inventory - Update from CVS - Merge from gnus--rel--5.10 - Update from CVS: lisp/smerge-mode.el: Add 'tools' to file keywords. - lisp/gnus/ChangeLog: Remove duplicate entry * gnus--rel--5.10 (patch 147-181) - Update from CVS - Merge from emacs--cvs-trunk--0 - Update from CVS: lisp/mml.el (mml-preview): Doc fix. - Update from CVS: texi/message.texi: Fix default values. - Update from CVS: texi/gnus.texi (RSS): Addition.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c92
1 files changed, 54 insertions, 38 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 21e89d372c2..4a10d6091e7 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -524,15 +524,19 @@ If the third argument is incorrect, Emacs may crash. */)
}
case Bgotoifnil:
- MAYBE_GC ();
- op = FETCH2;
- if (NILP (POP))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
- break;
+ {
+ Lisp_Object v1;
+ MAYBE_GC ();
+ op = FETCH2;
+ v1 = POP;
+ if (NILP (v1))
+ {
+ BYTE_CODE_QUIT;
+ CHECK_RANGE (op);
+ stack.pc = stack.byte_string_start + op;
+ }
+ break;
+ }
case Bcar:
{
@@ -730,15 +734,19 @@ If the third argument is incorrect, Emacs may crash. */)
break;
case Bgotoifnonnil:
- MAYBE_GC ();
- op = FETCH2;
- if (!NILP (POP))
- {
- BYTE_CODE_QUIT;
- CHECK_RANGE (op);
- stack.pc = stack.byte_string_start + op;
- }
- break;
+ {
+ Lisp_Object v1;
+ MAYBE_GC ();
+ op = FETCH2;
+ v1 = POP;
+ if (!NILP (v1))
+ {
+ BYTE_CODE_QUIT;
+ CHECK_RANGE (op);
+ stack.pc = stack.byte_string_start + op;
+ }
+ break;
+ }
case Bgotoifnilelsepop:
MAYBE_GC ();
@@ -771,24 +779,32 @@ If the third argument is incorrect, Emacs may crash. */)
break;
case BRgotoifnil:
- MAYBE_GC ();
- if (NILP (POP))
- {
- BYTE_CODE_QUIT;
- stack.pc += (int) *stack.pc - 128;
- }
- stack.pc++;
- break;
+ {
+ Lisp_Object v1;
+ MAYBE_GC ();
+ v1 = POP;
+ if (NILP (v1))
+ {
+ BYTE_CODE_QUIT;
+ stack.pc += (int) *stack.pc - 128;
+ }
+ stack.pc++;
+ break;
+ }
case BRgotoifnonnil:
- MAYBE_GC ();
- if (!NILP (POP))
- {
- BYTE_CODE_QUIT;
- stack.pc += (int) *stack.pc - 128;
- }
- stack.pc++;
- break;
+ {
+ Lisp_Object v1;
+ MAYBE_GC ();
+ v1 = POP;
+ if (!NILP (v1))
+ {
+ BYTE_CODE_QUIT;
+ stack.pc += (int) *stack.pc - 128;
+ }
+ stack.pc++;
+ break;
+ }
case BRgotoifnilelsepop:
MAYBE_GC ();
@@ -861,11 +877,11 @@ If the third argument is incorrect, Emacs may crash. */)
case Bcondition_case:
{
- Lisp_Object v1;
- v1 = POP;
- v1 = Fcons (POP, v1);
+ Lisp_Object handlers, body;
+ handlers = POP;
+ body = POP;
BEFORE_POTENTIAL_GC ();
- TOP = Fcondition_case (Fcons (TOP, v1));
+ TOP = internal_lisp_condition_case (TOP, body, handlers);
AFTER_POTENTIAL_GC ();
break;
}