Bug 1418153 - Fold imalloc into arena_t::Malloc. r?njn draft
authorMike Hommey <mh+mozilla@glandium.org>
Tue, 14 Nov 2017 08:31:53 +0900
changeset 699643 fc1a6407c7f9d0c01c9ab19b19f3e301e3bc04d7
parent 699642 db7043ff29229e55d248d05c9a417a44a949c816
child 699644 e2a3fd5461327fcdb0662d441dcf5578ef4dd471
push id89625
push userbmo:mh+mozilla@glandium.org
push dateFri, 17 Nov 2017 11:44:35 +0000
reviewersnjn
bugs1418153
milestone59.0a1
Bug 1418153 - Fold imalloc into arena_t::Malloc. r?njn
memory/build/mozjemalloc.cpp
--- a/memory/build/mozjemalloc.cpp
+++ b/memory/build/mozjemalloc.cpp
@@ -3067,32 +3067,24 @@ arena_t::MallocLarge(size_t aSize, bool 
   return ret;
 }
 
 void*
 arena_t::Malloc(size_t aSize, bool aZero)
 {
   MOZ_DIAGNOSTIC_ASSERT(mMagic == ARENA_MAGIC);
   MOZ_ASSERT(aSize != 0);
-  MOZ_ASSERT(QUANTUM_CEILING(aSize) <= gMaxLargeClass);
-
-  return (aSize <= gMaxBinClass) ? MallocSmall(aSize, aZero)
-                                 : MallocLarge(aSize, aZero);
-}
-
-static inline void*
-imalloc(size_t aSize, bool aZero, arena_t* aArena)
-{
-  MOZ_ASSERT(aSize != 0);
-
-  MOZ_ASSERT(aArena);
+
+  if (aSize <= gMaxBinClass) {
+    return MallocSmall(aSize, aZero);
+  }
   if (aSize <= gMaxLargeClass) {
-    return aArena->Malloc(aSize, aZero);
-  }
-  return aArena->MallocHuge(aSize, aZero);
+    return MallocLarge(aSize, aZero);
+  }
+  return MallocHuge(aSize, aZero);
 }
 
 // Only handles large allocations that require more than page alignment.
 void*
 arena_t::PallocLarge(size_t aAlignment, size_t aSize, size_t aAllocSize)
 {
   void* ret;
   size_t offset;
@@ -4261,17 +4253,17 @@ BaseAllocator::malloc(size_t aSize)
     ret = nullptr;
     goto RETURN;
   }
 
   if (aSize == 0) {
     aSize = 1;
   }
   arena = mArena ? mArena : choose_arena(aSize);
-  ret = imalloc(aSize, /* zero = */ false, arena);
+  ret = arena->Malloc(aSize, /* zero = */ false);
 
 RETURN:
   if (!ret) {
     errno = ENOMEM;
   }
 
   return ret;
 }
@@ -4302,17 +4294,17 @@ BaseAllocator::calloc(size_t aNum, size_
   if (malloc_init()) {
     CheckedInt<size_t> checkedSize = CheckedInt<size_t>(aNum) * aSize;
     if (checkedSize.isValid()) {
       size_t allocSize = checkedSize.value();
       if (allocSize == 0) {
         allocSize = 1;
       }
       arena_t* arena = mArena ? mArena : choose_arena(allocSize);
-      ret = imalloc(allocSize, /* zero = */ true, arena);
+      ret = arena->Malloc(allocSize, /* zero = */ true);
     } else {
       ret = nullptr;
     }
   } else {
     ret = nullptr;
   }
 
   if (!ret) {
@@ -4339,17 +4331,17 @@ BaseAllocator::realloc(void* aPtr, size_
     if (!ret) {
       errno = ENOMEM;
     }
   } else {
     if (!malloc_init()) {
       ret = nullptr;
     } else {
       arena_t* arena = mArena ? mArena : choose_arena(aSize);
-      ret = imalloc(aSize, /* zero = */ false, arena);
+      ret = arena->Malloc(aSize, /* zero = */ false);
     }
 
     if (!ret) {
       errno = ENOMEM;
     }
   }
 
   return ret;