next: *
This commit is contained in:
parent
1746d12266
commit
d279bf1d31
17 changed files with 407 additions and 137 deletions
|
|
@ -139,14 +139,26 @@ void growl_gc_collect(GrowlVM *vm) {
|
|||
gc_print_stats(vm, "before GC");
|
||||
#endif
|
||||
|
||||
// Forward work stack
|
||||
for (size_t i = 0; i < GROWL_STACK_SIZE; ++i) {
|
||||
vm->wst[i] = forward(vm, vm->wst[i]);
|
||||
}
|
||||
|
||||
// Forward retain stack
|
||||
for (size_t i = 0; i < GROWL_STACK_SIZE; ++i) {
|
||||
vm->rst[i] = forward(vm, vm->rst[i]);
|
||||
}
|
||||
|
||||
// Forward GC roots
|
||||
for (size_t i = 0; i < vm->root_count; ++i) {
|
||||
*vm->roots[i] = forward(vm, *vm->roots[i]);
|
||||
}
|
||||
|
||||
// Forward word definitions
|
||||
for (size_t i = 0; i < vm->defs.count; ++i) {
|
||||
vm->defs.data[i].callable = forward(vm, vm->defs.data[i].callable);
|
||||
}
|
||||
|
||||
uint8_t *tenured_scan = vm->tenured.start;
|
||||
while (tenured_scan < vm->tenured.free) {
|
||||
GrowlObjectHeader *hdr = (GrowlObjectHeader *)tenured_scan;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue