Reduce allocations due to collocation enforcement
Reduce allocations due to collocation enforcement

We now only allocate a single Thread::Backtrace::Location object (rather
than one per stack frame) when callers are collocated. When callers are
not collocated, we then allocate a full Kernel#caller array to fill in
the exception's backtrace. This avoids many Thread::Backtrace::Location
allocations in the happy path.

tjoyal/graphql-client,tjoyal/graphql-client