mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-09 05:01:02 -08:00
(HANDLE_RELOCATION): New macro.
(MAYBE_GC): Call HANDLE_RELOCATION. Swallow following semicolon. (Fbyte_code): Use HANDLE_RELOCATION.
This commit is contained in:
parent
24e519d8c9
commit
5e7ed09384
1 changed files with 16 additions and 6 deletions
|
|
@ -256,7 +256,20 @@ Lisp_Object Qbytecode;
|
|||
|
||||
#define MAYBE_GC() \
|
||||
if (consing_since_gc > gc_cons_threshold) \
|
||||
Fgarbage_collect ();
|
||||
{ \
|
||||
Fgarbage_collect (); \
|
||||
HANDLE_RELOCATION (); \
|
||||
} \
|
||||
else
|
||||
|
||||
/* Relocate BYTESTR if there has been a GC recently. */
|
||||
#define HANDLE_RELOCATION() \
|
||||
if (! EQ (string_saved, bytestr)) \
|
||||
{ \
|
||||
pc = pc - XSTRING (string_saved)->data + XSTRING (bytestr)->data; \
|
||||
string_saved = bytestr; \
|
||||
} \
|
||||
else
|
||||
|
||||
/* Check for jumping out of range. */
|
||||
#define CHECK_RANGE(ARG) \
|
||||
|
|
@ -323,11 +336,8 @@ If the third argument is incorrect, Emacs may crash.")
|
|||
pc - XSTRING (string_saved)->data);
|
||||
#endif
|
||||
|
||||
if (! EQ (string_saved, bytestr))
|
||||
{
|
||||
pc = pc - XSTRING (string_saved)->data + XSTRING (bytestr)->data;
|
||||
string_saved = bytestr;
|
||||
}
|
||||
/* Update BYTESTR if we had a garbage collection. */
|
||||
HANDLE_RELOCATION ();
|
||||
|
||||
#ifdef BYTE_CODE_METER
|
||||
prev_op = this_op;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue