aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorStefan Monnier2003-09-11 21:58:32 +0000
committerStefan Monnier2003-09-11 21:58:32 +0000
commit2a1c1d7150e64c0c05a1d1e17b288091cbd98011 (patch)
treea594ed3c24431858bde482c449ff42d6145e16b2 /src/bytecode.c
parent9f7b135da746000dd278489340bd3fccef81e797 (diff)
downloademacs-2a1c1d7150e64c0c05a1d1e17b288091cbd98011.tar.gz
emacs-2a1c1d7150e64c0c05a1d1e17b288091cbd98011.zip
(mark_byte_stack, unmark_byte_stack): Ignore the markbit.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c29
1 files changed, 4 insertions, 25 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index a4ade9650ec..a13ecc19770 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -286,27 +286,13 @@ mark_byte_stack ()
286 The culprit is found in the frame of Fbyte_code where the 286 The culprit is found in the frame of Fbyte_code where the
287 address of its local variable `stack' is equal to the 287 address of its local variable `stack' is equal to the
288 recorded value of `stack' here. */ 288 recorded value of `stack' here. */
289 if (!stack->top) 289 eassert (stack->top);
290 abort ();
291 290
292 for (obj = stack->bottom; obj <= stack->top; ++obj) 291 for (obj = stack->bottom; obj <= stack->top; ++obj)
293 if (!XMARKBIT (*obj)) 292 mark_object (*obj);
294 {
295 mark_object (*obj);
296 XMARK (*obj);
297 }
298
299 if (!XMARKBIT (stack->byte_string))
300 {
301 mark_object (stack->byte_string);
302 XMARK (stack->byte_string);
303 }
304 293
305 if (!XMARKBIT (stack->constants)) 294 mark_object (stack->byte_string);
306 { 295 mark_object (stack->constants);
307 mark_object (stack->constants);
308 XMARK (stack->constants);
309 }
310 } 296 }
311} 297}
312 298
@@ -318,16 +304,9 @@ void
318unmark_byte_stack () 304unmark_byte_stack ()
319{ 305{
320 struct byte_stack *stack; 306 struct byte_stack *stack;
321 Lisp_Object *obj;
322 307
323 for (stack = byte_stack_list; stack; stack = stack->next) 308 for (stack = byte_stack_list; stack; stack = stack->next)
324 { 309 {
325 for (obj = stack->bottom; obj <= stack->top; ++obj)
326 XUNMARK (*obj);
327
328 XUNMARK (stack->byte_string);
329 XUNMARK (stack->constants);
330
331 if (stack->byte_string_start != SDATA (stack->byte_string)) 310 if (stack->byte_string_start != SDATA (stack->byte_string))
332 { 311 {
333 int offset = stack->pc - stack->byte_string_start; 312 int offset = stack->pc - stack->byte_string_start;