From: Nickolas Lloyd Date: Thu, 2 Feb 2017 01:28:55 +0000 (-0500) Subject: Merge branch 'master' into nick.lloyd-bytecode-jit X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3dcb25deaefb52c9d314c4eddb93a3a815a58ec0;p=emacs.git Merge branch 'master' into nick.lloyd-bytecode-jit --- 3dcb25deaefb52c9d314c4eddb93a3a815a58ec0 diff --cc src/bytecode.c index 3e64d2f42b6,499fb881e2e..02a3f700fdd --- a/src/bytecode.c +++ b/src/bytecode.c @@@ -56,36 -74,216 +56,33 @@@ along with GNU Emacs. If not, see next) + { +#ifdef HAVE_LIBJIT + if (!stack->byte_string_start) + continue; #endif -}; + if (stack->byte_string_start != SDATA (stack->byte_string)) + { + ptrdiff_t offset = stack->pc - stack->byte_string_start; + stack->byte_string_start = SDATA (stack->byte_string); + stack->pc = stack->byte_string_start + offset; + } + } +} + /* 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 + + #define FETCH (*pc++) /* Fetch two bytes from the bytecode stream and make a 16-bit number out of them. */ diff --cc src/lisp.h index 79cd85b736b,91c430fe98d..0c444cc766f --- a/src/lisp.h +++ b/src/lisp.h @@@ -2887,26 -2769,6 +2772,16 @@@ CHECK_STRING_CAR (Lisp_Object x { CHECK_TYPE (STRINGP (XCAR (x)), Qstringp, XCAR (x)); } +INLINE void - CHECK_CONS (Lisp_Object x) - { - CHECK_TYPE (CONSP (x), Qconsp, x); - } - INLINE void - CHECK_VECTOR (Lisp_Object x) - { - CHECK_TYPE (VECTORP (x), Qvectorp, x); - } - INLINE void +CHECK_COMPILED (Lisp_Object x) +{ + CHECK_TYPE (COMPILEDP (x), Qcompiledp, x); +} +INLINE void +CHECK_BOOL_VECTOR (Lisp_Object x) +{ + CHECK_TYPE (BOOL_VECTOR_P (x), Qbool_vector_p, x); +} /* This is a bit special because we always need size afterwards. */ INLINE ptrdiff_t CHECK_VECTOR_OR_STRING (Lisp_Object x)