cosmetic changes
This commit is contained in:
		
							parent
							
								
									6d43b31a68
								
							
						
					
					
						commit
						a58ebe91a8
					
				|  | @ -202,15 +202,13 @@ heap_free(pic_state *pic, void *ap) | ||||||
|   if (bp + bp->s.size == p->s.ptr) { |   if (bp + bp->s.size == p->s.ptr) { | ||||||
|     bp->s.size += p->s.ptr->s.size; |     bp->s.size += p->s.ptr->s.size; | ||||||
|     bp->s.ptr = p->s.ptr->s.ptr; |     bp->s.ptr = p->s.ptr->s.ptr; | ||||||
|   } |   } else { | ||||||
|   else { |  | ||||||
|     bp->s.ptr = p->s.ptr; |     bp->s.ptr = p->s.ptr; | ||||||
|   } |   } | ||||||
|   if (p + p->s.size == bp && p->s.size > 1) { |   if (p + p->s.size == bp && p->s.size > 1) { | ||||||
|     p->s.size += bp->s.size; |     p->s.size += bp->s.size; | ||||||
|     p->s.ptr = bp->s.ptr; |     p->s.ptr = bp->s.ptr; | ||||||
|   } |   } else { | ||||||
|   else { |  | ||||||
|     p->s.ptr = bp; |     p->s.ptr = bp; | ||||||
|   } |   } | ||||||
|   pic->heap->freep = p; |   pic->heap->freep = p; | ||||||
|  | @ -715,34 +713,34 @@ gc_sweep_symbols(pic_state *pic) | ||||||
| static void | static void | ||||||
| gc_sweep_page(pic_state *pic, struct heap_page *page) | gc_sweep_page(pic_state *pic, struct heap_page *page) | ||||||
| { | { | ||||||
|   union header *bp, *p, *s = NULL, *t = NULL; |   union header *bp, *p, *head = NULL, *tail = NULL; | ||||||
| 
 | 
 | ||||||
|   for (bp = page->basep; ; bp = bp->s.ptr) { |   for (bp = page->basep; ; bp = bp->s.ptr) { | ||||||
|     for (p = bp + bp->s.size; p != bp->s.ptr; p += p->s.size) { |     for (p = bp + bp->s.size; p != bp->s.ptr; p += p->s.size) { | ||||||
|       if (p == page->endp) { |       if (p == page->endp) { | ||||||
| 	goto escape; |         goto escape; | ||||||
|       } |       } | ||||||
|       if (! gc_is_marked(p)) { |       if (gc_is_marked(p)) { | ||||||
| 	if (s == NULL) { |         gc_unmark(p); | ||||||
| 	  s = p; |       } else { | ||||||
| 	} |         if (head == NULL) { | ||||||
| 	else { |           head = p; | ||||||
| 	  t->s.ptr = p; |         } else { | ||||||
| 	} |           tail->s.ptr = p; | ||||||
| 	t = p; |         } | ||||||
| 	t->s.ptr = NULL; /* For dead objects we can safely reuse ptr field */ |         tail = p; | ||||||
|  |         tail->s.ptr = NULL; /* We can safely reuse ptr field of dead object */ | ||||||
|       } |       } | ||||||
|       gc_unmark(p); |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  escape: |  escape: | ||||||
| 
 | 
 | ||||||
|   /* free! */ |   /* free! */ | ||||||
|   while (s != NULL) { |   while (head != NULL) { | ||||||
|     t = s->s.ptr; |     p = head; | ||||||
|     gc_finalize_object(pic, (struct pic_object *)(s + 1)); |     head = head->s.ptr; | ||||||
|     heap_free(pic, s + 1); |     gc_finalize_object(pic, (struct pic_object *)(p + 1)); | ||||||
|     s = t; |     heap_free(pic, p + 1); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	 Yuichi Nishiwaki
						Yuichi Nishiwaki