Remove GENERAL_MALLOC internal macro
authorIvan Maidanski <ivmai@mail.ru>
Mon, 13 Nov 2017 19:58:37 +0000 (22:58 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 14 Nov 2017 08:36:36 +0000 (11:36 +0300)
(code refactoring)

* alloc.c: Update comment (about GC_allocobj usage).
* include/private/gc_priv.h (GENERAL_MALLOC): Remove.
* include/private/gc_priv.h (GENERAL_MALLOC_IOP): Move to typd_mlc.c.
* malloc.c (GC_malloc_kind_global): Expand GENERAL_MALLOC macro; copy
the comment from gc_priv.h.

alloc.c
include/private/gc_priv.h
malloc.c
typd_mlc.c

diff --git a/alloc.c b/alloc.c
index bca4f02..e004717 100644 (file)
--- a/alloc.c
+++ b/alloc.c
  * kind k objects of size i points to a non-empty
  * free list. It returns a pointer to the first entry on the free list.
  * In a single-threaded world, GC_allocobj may be called to allocate
- * an object of (small) size lb as follows:
+ * an object of small size lb (and NORMAL kind) as follows
+ * (GC_generic_malloc_inner is a wrapper over GC_allocobj which also
+ * fills in GC_size_map if needed):
  *
  *   lg = GC_size_map[lb];
  *   op = GC_objfreelist[lg];
  *   if (NULL == op) {
- *     op = GENERAL_MALLOC(lb, NORMAL);
+ *     op = GC_generic_malloc_inner(lb, NORMAL);
  *   } else {
  *     GC_objfreelist[lg] = obj_link(op);
+ *     GC_bytes_allocd += GRANULES_TO_BYTES((word)lg);
  *   }
  *
  * Note that this is very fast if the free list is non-empty; it should
index 7b1bc6e..dcb7e5d 100644 (file)
@@ -1946,13 +1946,6 @@ GC_INNER ptr_t GC_allocobj(size_t sz, int kind);
 # define GC_DBG_EXTRAS "unknown", 0
 #endif
 
-/* We make the GC_clear_stack() call a tail one, hoping to get more of  */
-/* the stack.                                                           */
-#define GENERAL_MALLOC(lb,k) \
-    GC_clear_stack(GC_generic_malloc(lb, k))
-#define GENERAL_MALLOC_IOP(lb,k) \
-    GC_clear_stack(GC_generic_malloc_ignore_off_page(lb, k))
-
 #ifdef GC_COLLECT_AT_MALLOC
   extern size_t GC_dbg_collect_at_malloc_min_lb;
                             /* variable visible outside for debugging   */
index cd9468a..e1594e8 100644 (file)
--- a/malloc.c
+++ b/malloc.c
@@ -325,7 +325,10 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_kind_global(size_t lb, int k)
         }
         UNLOCK();
     }
-    return GENERAL_MALLOC(lb, k);
+
+    /* We make the GC_clear_stack() call a tail one, hoping to get more */
+    /* of the stack.                                                    */
+    return GC_clear_stack(GC_generic_malloc(lb, k));
 }
 
 #if defined(THREADS) && !defined(THREAD_LOCAL_ALLOC)
index 98f542e..f62bc5d 100644 (file)
@@ -604,6 +604,11 @@ GC_API GC_ATTR_MALLOC void * GC_CALL GC_malloc_explicitly_typed(size_t lb,
     return op;
 }
 
+/* We make the GC_clear_stack() call a tail one, hoping to get more of  */
+/* the stack.                                                           */
+#define GENERAL_MALLOC_IOP(lb, k) \
+                GC_clear_stack(GC_generic_malloc_ignore_off_page(lb, k))
+
 GC_API GC_ATTR_MALLOC void * GC_CALL
     GC_malloc_explicitly_typed_ignore_off_page(size_t lb, GC_descr d)
 {