| 414 |
gc_root_buffer *current = GC_G(roots).next; |
gc_root_buffer *current = GC_G(roots).next; |
| 415 |
|
|
| 416 |
while (current != &GC_G(roots)) { |
while (current != &GC_G(roots)) { |
| 417 |
if (current->handle && EG(objects_store).object_buckets) { |
if (current->handle) { |
| 418 |
struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj; |
if (EG(objects_store).object_buckets) { |
| 419 |
|
struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj; |
| 420 |
|
|
| 421 |
if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) { |
if (GC_GET_COLOR(obj->buffered) == GC_PURPLE) { |
| 422 |
zval z; |
zval z; |
| 423 |
|
|
| 424 |
INIT_PZVAL(&z); |
INIT_PZVAL(&z); |
| 425 |
Z_OBJ_HANDLE(z) = current->handle; |
Z_OBJ_HANDLE(z) = current->handle; |
| 426 |
Z_OBJ_HT(z) = current->u.handlers; |
Z_OBJ_HT(z) = current->u.handlers; |
| 427 |
zobj_mark_grey(obj, &z TSRMLS_CC); |
zobj_mark_grey(obj, &z TSRMLS_CC); |
| 428 |
} else { |
} else { |
| 429 |
GC_SET_ADDRESS(obj->buffered, NULL); |
GC_SET_ADDRESS(obj->buffered, NULL); |
| 430 |
GC_REMOVE_FROM_BUFFER(current); |
GC_REMOVE_FROM_BUFFER(current); |
| 431 |
|
} |
| 432 |
} |
} |
| 433 |
} else { |
} else { |
| 434 |
if (GC_ZVAL_GET_COLOR(current->u.pz) == GC_PURPLE) { |
if (GC_ZVAL_GET_COLOR(current->u.pz) == GC_PURPLE) { |
| 625 |
gc_root_buffer *current = GC_G(roots).next; |
gc_root_buffer *current = GC_G(roots).next; |
| 626 |
|
|
| 627 |
while (current != &GC_G(roots)) { |
while (current != &GC_G(roots)) { |
| 628 |
if (current->handle && EG(objects_store).object_buckets) { |
if (current->handle) { |
| 629 |
struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj; |
if (EG(objects_store).object_buckets) { |
| 630 |
zval z; |
struct _store_object *obj = &EG(objects_store).object_buckets[current->handle].bucket.obj; |
| 631 |
|
zval z; |
| 632 |
|
|
| 633 |
GC_SET_ADDRESS(obj->buffered, NULL); |
GC_SET_ADDRESS(obj->buffered, NULL); |
| 634 |
INIT_PZVAL(&z); |
INIT_PZVAL(&z); |
| 635 |
Z_OBJ_HANDLE(z) = current->handle; |
Z_OBJ_HANDLE(z) = current->handle; |
| 636 |
Z_OBJ_HT(z) = current->u.handlers; |
Z_OBJ_HT(z) = current->u.handlers; |
| 637 |
zobj_collect_white(&z TSRMLS_CC); |
zobj_collect_white(&z TSRMLS_CC); |
| 638 |
|
} |
| 639 |
} else { |
} else { |
| 640 |
GC_ZVAL_SET_ADDRESS(current->u.pz, NULL); |
GC_ZVAL_SET_ADDRESS(current->u.pz, NULL); |
| 641 |
zval_collect_white(current->u.pz TSRMLS_CC); |
zval_collect_white(current->u.pz TSRMLS_CC); |