Lisp_Object byte_string;
const unsigned char *byte_string_start;
+#if BYTE_MARK_STACK
/* The vector of constants used during byte-code execution. Storing
this here protects it from GC because mark_byte_stack marks it. */
Lisp_Object constants;
+#endif
/* Next entry in byte_stack_list. */
struct byte_stack *next;
}
\f
-/* Fetch the next byte from the bytecode stream */
+/* Fetch the next byte from the bytecode stream. */
#define FETCH *stack.pc++
/* Fetch two bytes from the bytecode stream and make a 16-bit number
- out of them */
+ out of them. */
#define FETCH2 (op = FETCH, op + (FETCH << 8))
#define DISCARD(n) (top -= (n))
/* Get the value which is at the top of the execution stack, but don't
- pop it. */
+ pop it. */
#define TOP (*top)
stack.byte_string = bytestr;
stack.pc = stack.byte_string_start = SDATA (bytestr);
+#if BYTE_MARK_STACK
stack.constants = vector;
+#endif
if (MAX_ALLOCA / word_size <= XFASTINT (maxdepth))
memory_full (SIZE_MAX);
top = alloca ((XFASTINT (maxdepth) + 1) * sizeof *top);
the table clearer. */
#define LABEL(OP) [OP] = &&insn_ ## OP
-#if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Woverride-init"
+#elif defined __clang__
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Winitializer-overrides"
#endif
/* This is the dispatch table for the threaded interpreter. */
#undef DEFINE
};
-#if (__GNUC__ == 4 && 6 <= __GNUC_MINOR__) || 4 < __GNUC__
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__) || defined __clang__
# pragma GCC diagnostic pop
#endif
{
BEFORE_POTENTIAL_GC ();
wrong_type_argument (Qlistp, v1);
- AFTER_POTENTIAL_GC ();
}
NEXT;
}
{
BEFORE_POTENTIAL_GC ();
wrong_type_argument (Qlistp, v1);
- AFTER_POTENTIAL_GC ();
}
NEXT;
}
c = XFASTINT (TOP);
if (NILP (BVAR (current_buffer, enable_multibyte_characters)))
MAKE_CHAR_MULTIBYTE (c);
- XSETFASTINT (TOP, syntax_code_spec[(int) SYNTAX (c)]);
+ XSETFASTINT (TOP, syntax_code_spec[SYNTAX (c)]);
}
NEXT;