Keep toSearch shorter by scanning descriptors before inner pointers.
Since size_t isn't actually defined to be a word-sized type (but there exists no such scalar type), replace it with ggc_size_t, which may be overridden.
Make toSearch a list of arrays instead of a single array, to avoid huge reallocs.
Always #define flags to 1 instead of just defining them. No real reason, just seems more elegant.
Making barrier_wait properly defer to the GC for users.