Use EXPECT in malloc result testing for NULL
authorIvan Maidanski <ivmai@mail.ru>
Wed, 18 Jan 2012 04:36:33 +0000 (08:36 +0400)
committerIvan Maidanski <ivmai@mail.ru>
Wed, 18 Jan 2012 08:37:04 +0000 (12:37 +0400)
* gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Use EXPECT to test "op"
value for NULL.
* malloc.c (GC_generic_malloc_inner, GC_malloc_uncollectable):
Likewise.
* mallocx.c (GC_generic_malloc_many, GC_posix_memalign): Likewise.
* typd_mlc.c (GC_malloc_explicitly_typed,
GC_malloc_explicitly_typed_ignore_off_page,
GC_calloc_explicitly_typed): Likewise.

gcj_mlc.c
malloc.c
mallocx.c
typd_mlc.c

index a7fefd9..a5f3fe5 100644 (file)
--- a/gcj_mlc.c
+++ b/gcj_mlc.c
@@ -247,7 +247,8 @@ GC_API void * GC_CALL GC_gcj_malloc_ignore_off_page(size_t lb,
         lg = GC_size_map[lb];
         opp = &(GC_gcjobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) == 0 ) {
+        op = *opp;
+        if (EXPECT(0 == op, FALSE)) {
             maybe_finalize();
             op = (ptr_t)GENERAL_MALLOC_INNER_IOP(lb, GC_gcj_kind);
             if (0 == op) {
index 75c9e0e..1400fc3 100644 (file)
--- a/malloc.c
+++ b/malloc.c
@@ -109,7 +109,8 @@ GC_INNER void * GC_generic_malloc_inner(size_t lb, int k)
         size_t lg = GC_size_map[lb];
         void ** opp = &(kind -> ok_freelist[lg]);
 
-        if( (op = *opp) == 0 ) {
+        op = *opp;
+        if (EXPECT(0 == op, FALSE)) {
             if (GC_size_map[lb] == 0) {
               if (!EXPECT(GC_is_initialized, TRUE)) GC_init();
               if (GC_size_map[lb] == 0) GC_extend_size_map(lb);
@@ -278,7 +279,8 @@ GC_API void * GC_CALL GC_malloc_uncollectable(size_t lb)
         lg = GC_size_map[lb];
         opp = &(GC_uobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) != 0 ) {
+        op = *opp;
+        if (EXPECT(0 != op, TRUE)) {
             *opp = obj_link(op);
             obj_link(op) = 0;
             GC_bytes_allocd += GRANULES_TO_BYTES(lg);
index 651cbad..a907df0 100644 (file)
--- a/mallocx.c
+++ b/mallocx.c
@@ -281,7 +281,8 @@ GC_API void GC_CALL GC_generic_malloc_many(size_t lb, int k, void **result)
     GC_ASSERT(lb != 0 && (lb & (GRANULE_BYTES-1)) == 0);
     if (!SMALL_OBJ(lb)) {
         op = GC_generic_malloc(lb, k);
-        if(0 != op) obj_link(op) = 0;
+        if (EXPECT(0 != op, TRUE))
+            obj_link(op) = 0;
         *result = op;
         return;
     }
@@ -515,7 +516,8 @@ GC_API int GC_CALL GC_posix_memalign(void **memptr, size_t align, size_t lb)
         lg = GC_size_map[lb];
         opp = &(GC_auobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) != 0 ) {
+        op = *opp;
+        if (EXPECT(0 != op, TRUE)) {
             *opp = obj_link(op);
             obj_link(op) = 0;
             GC_bytes_allocd += GRANULES_TO_BYTES(lg);
index aba8e64..57fabdb 100644 (file)
@@ -594,7 +594,8 @@ GC_API void * GC_CALL GC_malloc_explicitly_typed(size_t lb, GC_descr d)
         lg = GC_size_map[lb];
         opp = &(GC_eobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) == 0 ) {
+        op = *opp;
+        if (EXPECT(0 == op, FALSE)) {
             UNLOCK();
             op = (ptr_t)GENERAL_MALLOC((word)lb, GC_explicit_kind);
             if (0 == op) return 0;
@@ -629,7 +630,8 @@ GC_API void * GC_CALL GC_malloc_explicitly_typed_ignore_off_page(size_t lb,
         lg = GC_size_map[lb];
         opp = &(GC_eobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) == 0 ) {
+        op = *opp;
+        if (EXPECT(0 == op, FALSE)) {
             UNLOCK();
             op = (ptr_t)GENERAL_MALLOC_IOP(lb, GC_explicit_kind);
             if (0 == op) return 0;
@@ -681,7 +683,8 @@ GC_API void * GC_CALL GC_calloc_explicitly_typed(size_t n, size_t lb,
         lg = GC_size_map[lb];
         opp = &(GC_arobjfreelist[lg]);
         LOCK();
-        if( (op = *opp) == 0 ) {
+        op = *opp;
+        if (EXPECT(0 == op, FALSE)) {
             UNLOCK();
             op = (ptr_t)GENERAL_MALLOC((word)lb, GC_array_kind);
             if (0 == op) return(0);