void Tuple::Info::mark(Object* obj, ObjectMark& mark) { Tuple* tup = as<Tuple>(obj); for(native_int i = 0; i < tup->num_fields(); i++) { Object* tmp = mark.call(tup->field[i]); if(tmp && tmp != tup->field[i]) mark.set(obj, &tup->field[i], tmp); } }
void Tuple::Info::mark(Object* obj, ObjectMark& mark) { Object* tmp; Tuple* tup = as<Tuple>(obj); for(size_t i = 0; i < tup->num_fields(); i++) { tmp = mark.call(tup->field[i]); if(tmp) mark.set(obj, &tup->field[i], tmp); } }
void PackedObject::Info::mark(Object* obj, ObjectMark& mark) { PackedObject* po = reinterpret_cast<PackedObject*>(obj); size_t fields = to_fields(object_size(obj)); Object** body = po->body_as_array(); for(size_t i = 0; i < fields; i++) { if(Object* tmp = mark.call(body[i])) { mark.set(obj, &body[i], tmp); } } }