while (1)
{
#ifdef BYTE_CODE_SAFE
- if (top > stacks)
- error ("Byte code stack overflow (byte compiler bug), pc %d, depth %d",
- stack.pc - stack.byte_string_start, stacke - top);
+ if (top > stacke)
+ abort ();
else if (top < stack.bottom - 1)
- error ("Byte code stack underflow (byte compiler bug), pc %d",
- stack.pc - stack.byte_string_start);
+ abort ();
#endif
#ifdef BYTE_CODE_METER
else if (NILP (v1))
TOP = Qnil;
else
- Fcar (wrong_type_argument (Qlistp, v1));
+ {
+ BEFORE_POTENTIAL_GC ();
+ Fcar (wrong_type_argument (Qlistp, v1));
+ AFTER_POTENTIAL_GC ();
+ }
break;
}
else if (NILP (v1))
TOP = Qnil;
else
- Fcdr (wrong_type_argument (Qlistp, v1));
+ {
+ BEFORE_POTENTIAL_GC ();
+ Fcdr (wrong_type_argument (Qlistp, v1));
+ AFTER_POTENTIAL_GC ();
+ }
break;
}
Lisp_Object v1, v2;
v1 = POP;
v2 = TOP;
+ BEFORE_POTENTIAL_GC ();
CHECK_NUMBER (v2, 0);
+ AFTER_POTENTIAL_GC ();
op = XINT (v2);
immediate_quit = 1;
while (--op >= 0)
else if (!NILP (v1))
{
immediate_quit = 0;
+ BEFORE_POTENTIAL_GC ();
v1 = wrong_type_argument (Qlistp, v1);
+ AFTER_POTENTIAL_GC ();
immediate_quit = 1;
op++;
}
else if (NILP (v1))
TOP = Qnil;
else
- Fcar (wrong_type_argument (Qlistp, v1));
+ {
+ BEFORE_POTENTIAL_GC ();
+ Fcar (wrong_type_argument (Qlistp, v1));
+ AFTER_POTENTIAL_GC ();
+ }
break;
}
{
Lisp_Object v1, v2;
v2 = POP; v1 = TOP;
+ BEFORE_POTENTIAL_GC ();
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v1, 0);
CHECK_NUMBER_OR_FLOAT_COERCE_MARKER (v2, 0);
-#ifdef LISP_FLOAT_TYPE
+ AFTER_POTENTIAL_GC ();
if (FLOATP (v1) || FLOATP (v2))
{
double f1, f2;
TOP = (f1 == f2 ? Qt : Qnil);
}
else
-#endif
TOP = (XINT (v1) == XINT (v2) ? Qt : Qnil);
break;
}
break;
case Bchar_syntax:
+ BEFORE_POTENTIAL_GC ();
CHECK_NUMBER (TOP, 0);
+ AFTER_POTENTIAL_GC ();
XSETFASTINT (TOP, syntax_code_spec[(int) SYNTAX (XINT (TOP))]);
break;
/* Exchange args and then do nth. */
v2 = POP;
v1 = TOP;
+ BEFORE_POTENTIAL_GC ();
CHECK_NUMBER (v2, 0);
+ AFTER_POTENTIAL_GC ();
op = XINT (v2);
immediate_quit = 1;
while (--op >= 0)
else if (!NILP (v1))
{
immediate_quit = 0;
+ BEFORE_POTENTIAL_GC ();
v1 = wrong_type_argument (Qlistp, v1);
+ AFTER_POTENTIAL_GC ();
immediate_quit = 1;
op++;
}
else if (NILP (v1))
TOP = Qnil;
else
- Fcar (wrong_type_argument (Qlistp, v1));
+ {
+ BEFORE_POTENTIAL_GC ();
+ Fcar (wrong_type_argument (Qlistp, v1));
+ AFTER_POTENTIAL_GC ();
+ }
}
else
{
#ifdef BYTE_CODE_SAFE
case Bset_mark:
+ BEFORE_POTENTIAL_GC ();
error ("set-mark is an obsolete bytecode");
+ AFTER_POTENTIAL_GC ();
break;
case Bscan_buffer:
+ BEFORE_POTENTIAL_GC ();
error ("scan-buffer is an obsolete bytecode");
+ AFTER_POTENTIAL_GC ();
break;
#endif
default:
#ifdef BYTE_CODE_SAFE
if (op < Bconstant)
- error ("unknown bytecode %d (byte compiler bug)", op);
+ {
+ abort ();
+ }
if ((op -= Bconstant) >= const_length)
- error ("no constant number %d (byte compiler bug)", op);
+ {
+ abort ();
+ }
PUSH (vectorp[op]);
#else
PUSH (vectorp[op - Bconstant]);