struct stack_frame_t *frame = stack_frame_head;
GC_static_object *staticObject = staticObjects.top;
val_t object;
+ struct nitni_ref *global_ref;
struct nitni_ref_array_link *local_ref_array_link; /* for native interface */
gc_allocation_pointer = gc_heap_pointer;
staticObject = staticObject->next;
}
+ /* Process global reference to Nit objects from C code */
+ global_ref = nitni_global_ref_list->head;
+ while (global_ref != NULL) {
+ object = global_ref->val;
+ if (!ISNULL(object) && ISOBJ(object)) {
+ global_ref->val = GC_evacuation((obj_t)object);
+ }
+ global_ref = global_ref->next;
+ }
+
/* Process function frames (local variables) */
while (frame != NULL) {
for (j = 0; j < frame->REG_size; j++) {