use gc_mark directly