Fix padding computation in ArenaAllocator::AllocAlign16()

Padding is being wrongly computed, resulting in a new Arena being used
for every 16-byte aligned allocation, which seems to be done only for
DexCachePair arrays. Fortunately these arrays are 8KB long so no physical memory is wasted, but virtual address space is getting wasted.

Test: art/test/testrunner/testrunner.py --host
Change-Id: I8cf6dd33eec6ba88a2a3775b58a674a8b5c7ca01
diff --git a/libartbase/base/arena_allocator.h b/libartbase/base/arena_allocator.h
index 12a44d5..bf7d932 100644
--- a/libartbase/base/arena_allocator.h
+++ b/libartbase/base/arena_allocator.h
@@ -289,7 +289,7 @@
       return AllocWithMemoryToolAlign16(bytes, kind);
     }
     uintptr_t padding =
-        ((reinterpret_cast<uintptr_t>(ptr_) + 15u) & 15u) - reinterpret_cast<uintptr_t>(ptr_);
+        RoundUp(reinterpret_cast<uintptr_t>(ptr_), 16) - reinterpret_cast<uintptr_t>(ptr_);
     ArenaAllocatorStats::RecordAlloc(bytes, kind);
     if (UNLIKELY(padding + bytes > static_cast<size_t>(end_ - ptr_))) {
       static_assert(kArenaAlignment >= 16, "Expecting sufficient alignment for new Arena.");