IMPALA-4752: make ObjectPool more efficient
Previously it was implemented as a vector of pointers to
dynamically allocated wrapper objects, where each wrapper object
stored a pointer to the object and a pointer to a vtable, which
had a pointer to a destructor, which then calls the actual
Instead of doing this, this patch changes ObjectPool to stores
the object pointer and function pointer inline in the vector.
This avoids an unnecessary malloc() and free() pair per object.
Ran core tests, which should exercise this heavily during query
Reviewed-by: Tim Armstrong <email@example.com>
Tested-by: Impala Public Jenkins