]> granicus.if.org Git - gc/commitdiff
Remove code duplication in gcj_malloc and malloc_explicitly_typed
authorIvan Maidanski <ivmai@mail.ru>
Wed, 16 May 2018 08:49:33 +0000 (11:49 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 17 Jul 2018 07:30:19 +0000 (10:30 +0300)
(a cherry-pick of commit 888b7da8 from 'master')

* gcj_mlc.c [GC_GCJ_SUPPORT] (GC_gcj_malloc): Store
ptr_to_struct_containing_descr in a single place of code.
* typd_mlc.c (GC_malloc_explicitly_typed_ignore_off_page): Store d (to
the object) in a single place of code.

gcj_mlc.c
typd_mlc.c

index 9b96077b61e24c5d7599058da89a386b69afdc48..2b051f7460246e5dab5beb9f71a771340c8d726d 100644 (file)
--- a/gcj_mlc.c
+++ b/gcj_mlc.c
@@ -186,9 +186,7 @@ static void maybe_finalize(void)
             *opp = obj_link(op);
             GC_bytes_allocd += GRANULES_TO_BYTES(lg);
         }
-        *(void **)op = ptr_to_struct_containing_descr;
         GC_ASSERT(((void **)op)[1] == 0);
-        UNLOCK();
     } else {
         LOCK();
         maybe_finalize();
@@ -198,9 +196,9 @@ static void maybe_finalize(void)
             UNLOCK();
             return((*oom_fn)(lb));
         }
-        *(void **)op = ptr_to_struct_containing_descr;
-        UNLOCK();
     }
+    *(void **)op = ptr_to_struct_containing_descr;
+    UNLOCK();
     return((void *) op);
 }
 
index b6a0059afaaf63062804c347227692f905e9ae5d..572b771fbc8d45a12b2e67775861c7829bce85ab 100644 (file)
@@ -672,15 +672,13 @@ GC_API GC_ATTR_MALLOC void * GC_CALL
             GC_bytes_allocd += GRANULES_TO_BYTES(lg);
             UNLOCK();
         }
-        ((word *)op)[GRANULES_TO_WORDS(lg) - 1] = d;
-   } else {
-       op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind);
-       if (op != NULL) {
-         lg = BYTES_TO_GRANULES(GC_size(op));
-         ((word *)op)[GRANULES_TO_WORDS(lg) - 1] = d;
-       }
-   }
-   return((void *) op);
+    } else {
+        op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind);
+        if (NULL == op) return NULL;
+        lg = BYTES_TO_GRANULES(GC_size(op));
+    }
+    ((word *)op)[GRANULES_TO_WORDS(lg) - 1] = d;
+    return op;
 }
 
 GC_API GC_ATTR_MALLOC void * GC_CALL GC_calloc_explicitly_typed(size_t n,