From 4e0e9a3bae62ea2a153052f96f4c0e7833e44c86 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 21 Apr 2005 14:23:26 +0300 Subject: [PATCH] InnoDB: Define some macros around GCC's __builtin_expect() and __builtin_prefetch(). Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/btr/btr0btr.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/btr/btr0cur.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/btr/btr0sea.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/include/univ.i: Define UNIV_EXPECT(), UNIV_LIKELY(), UNIV_UNLIKELY(), UNIV_LIKELY_NULL(), UNIV_PREFETCH_R() and UNIV_PREFETCH_RW(). innobase/lock/lock0lock.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/page/page0cur.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/page/page0page.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/rem/rem0rec.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0ins.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0mysql.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0purge.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0row.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0sel.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0undo.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/row/row0upd.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. innobase/trx/trx0rec.c: Add UNIV_LIKELY_NULL to if (heap) mem_free_heap(heap) tests. --- innobase/btr/btr0btr.c | 12 ++++++------ innobase/btr/btr0cur.c | 26 +++++++++++++------------- innobase/btr/btr0sea.c | 14 +++++++------- innobase/include/univ.i | 14 ++++++++++++++ innobase/lock/lock0lock.c | 8 ++++---- innobase/page/page0cur.c | 16 ++++++++-------- innobase/page/page0page.c | 14 +++++++------- innobase/rem/rem0rec.c | 4 ++-- innobase/row/row0ins.c | 6 +++--- innobase/row/row0mysql.c | 2 +- innobase/row/row0purge.c | 4 ++-- innobase/row/row0row.c | 2 +- innobase/row/row0sel.c | 10 +++++----- innobase/row/row0undo.c | 2 +- innobase/row/row0upd.c | 12 ++++++------ innobase/trx/trx0rec.c | 4 ++-- 16 files changed, 82 insertions(+), 68 deletions(-) diff --git a/innobase/btr/btr0btr.c b/innobase/btr/btr0btr.c index fe6220b860d..961b9eb696d 100644 --- a/innobase/btr/btr0btr.c +++ b/innobase/btr/btr0btr.c @@ -1284,14 +1284,14 @@ btr_page_get_sure_split_rec( next_rec = page_rec_get_next(rec); } if (next_rec != page_get_supremum_rec(page)) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(next_rec); } } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(rec); @@ -2109,7 +2109,7 @@ btr_compress( rec_get_offsets(node_ptr, cursor->index, offsets_, ULINT_UNDEFINED, &heap), right_page_no, mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } btr_node_ptr_delete(tree, merge_page, mtr); @@ -2403,7 +2403,7 @@ btr_print_tree( root = btr_root_get(tree, &mtr); btr_print_recursive(tree, root, width, &heap, &offsets, &mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -2557,14 +2557,14 @@ btr_index_rec_validate( rec_print_new(stderr, rec, offsets); putc('\n', stderr); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(FALSE); } } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(TRUE); diff --git a/innobase/btr/btr0cur.c b/innobase/btr/btr0cur.c index d7342c8bff5..80a2600c7f9 100644 --- a/innobase/btr/btr0cur.c +++ b/innobase/btr/btr0cur.c @@ -431,7 +431,7 @@ retry_page_get: cursor->thr)) { /* Insertion to the insert buffer succeeded */ cursor->flag = BTR_CUR_INSERT_TO_IBUF; - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return; @@ -525,7 +525,7 @@ retry_page_get: page_no = btr_node_ptr_get_child_page_no(node_ptr, offsets); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -681,7 +681,7 @@ btr_cur_open_at_index_side( page_no = btr_node_ptr_get_child_page_no(node_ptr, offsets); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -762,7 +762,7 @@ btr_cur_open_at_rnd_pos( page_no = btr_node_ptr_get_child_page_no(node_ptr, offsets); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -1261,7 +1261,7 @@ btr_cur_upd_lock_and_undo( err = lock_clust_rec_modify_check_and_lock(flags, rec, index, rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap), thr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } if (err != DB_SUCCESS) { @@ -1451,7 +1451,7 @@ btr_cur_update_in_place( thr, &roll_ptr); if (err != DB_SUCCESS) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -1498,7 +1498,7 @@ btr_cur_update_in_place( btr_cur_unmark_extern_fields(rec, mtr, offsets); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(DB_SUCCESS); @@ -2078,7 +2078,7 @@ btr_cur_parse_del_mark_set_clust_rec( rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap), pos, trx_id, roll_ptr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -2138,7 +2138,7 @@ btr_cur_del_mark_set_clust_rec( if (err != DB_SUCCESS) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -2149,7 +2149,7 @@ btr_cur_del_mark_set_clust_rec( &roll_ptr); if (err != DB_SUCCESS) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -2175,7 +2175,7 @@ btr_cur_del_mark_set_clust_rec( btr_cur_del_mark_set_clust_rec_log(flags, rec, index, val, trx, roll_ptr, mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(DB_SUCCESS); @@ -2443,7 +2443,7 @@ btr_cur_optimistic_delete( mtr); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -2943,7 +2943,7 @@ btr_estimate_number_of_different_key_vals( } mem_free(n_diff); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/btr/btr0sea.c b/innobase/btr/btr0sea.c index 97fdce2df75..cb43876e303 100644 --- a/innobase/btr/btr0sea.c +++ b/innobase/btr/btr0sea.c @@ -435,7 +435,7 @@ btr_search_update_hash_ref( offsets_, ULINT_UNDEFINED, &heap), block->curr_n_fields, block->curr_n_bytes, tree_id); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } #ifdef UNIV_SYNC_DEBUG @@ -659,7 +659,7 @@ btr_search_check_guess( success = cmp != 1; } exit_func: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(success); @@ -1010,7 +1010,7 @@ next_rec: prev_fold = fold; } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1252,7 +1252,7 @@ exit_func: mem_free(folds); mem_free(recs); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -1370,7 +1370,7 @@ btr_search_update_hash_on_delete( fold = rec_fold(rec, rec_get_offsets(rec, cursor->index, offsets_, ULINT_UNDEFINED, &heap), block->curr_n_fields, block->curr_n_bytes, tree_id); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } rw_lock_x_lock(&btr_search_latch); @@ -1573,7 +1573,7 @@ check_next_rec: } function_exit: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } if (locked) { @@ -1662,7 +1662,7 @@ btr_search_validate(void) } rw_lock_x_unlock(&btr_search_latch); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } diff --git a/innobase/include/univ.i b/innobase/include/univ.i index 8158c198e21..4bd16dc4a40 100644 --- a/innobase/include/univ.i +++ b/innobase/include/univ.i @@ -243,6 +243,20 @@ contains the sum of the following flag and the locally stored len. */ #define UNIV_EXTERN_STORAGE_FIELD (UNIV_SQL_NULL - UNIV_PAGE_SIZE) +#if defined(__GNUC__) && (__GNUC__ > 2) +# define UNIV_EXPECT(expr,value) __builtin_expect(expr, value) +# define UNIV_LIKELY_NULL(expr) __builtin_expect((ulint) expr, 0) +# define UNIV_PREFETCH_R(addr) __builtin_prefetch(addr, 0, 3) +# define UNIV_PREFETCH_RW(addr) __builtin_prefetch(addr, 1, 3) +#else +# define UNIV_EXPECT(expr,value) (expr) +# define UNIV_LIKELY_NULL(expr) (expr) +# define UNIV_PREFETCH_R(addr) ((void) 0) +# define UNIV_PREFETCH_RW(addr) ((void) 0) +#endif +#define UNIV_LIKELY(expr) UNIV_EXPECT(expr, TRUE) +#define UNIV_UNLIKELY(expr) UNIV_EXPECT(expr, FALSE) + #include #include "ut0dbg.h" #include "ut0ut.h" diff --git a/innobase/lock/lock0lock.c b/innobase/lock/lock0lock.c index 512f487b3f5..4a69c718abb 100644 --- a/innobase/lock/lock0lock.c +++ b/innobase/lock/lock0lock.c @@ -4187,7 +4187,7 @@ lock_rec_print( } mtr_commit(&mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -4664,7 +4664,7 @@ function_exit: mtr_commit(&mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(TRUE); @@ -4850,7 +4850,7 @@ lock_rec_insert_check_and_lock( offsets = rec_get_offsets(next_rec, index, offsets_, ULINT_UNDEFINED, &heap); ut_ad(lock_rec_queue_validate(next_rec, index, offsets)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -4999,7 +4999,7 @@ lock_sec_rec_modify_check_and_lock( offsets = rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap); ut_ad(lock_rec_queue_validate(rec, index, offsets)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/page/page0cur.c b/innobase/page/page0cur.c index 7738f5a34f0..aade42c3a45 100644 --- a/innobase/page/page0cur.c +++ b/innobase/page/page0cur.c @@ -129,7 +129,7 @@ page_cur_try_search_shortcut( #endif success = TRUE; exit_func: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(success); @@ -451,7 +451,7 @@ page_cur_search_with_match( *iup_matched_bytes = up_matched_bytes; *ilow_matched_fields = low_matched_fields; *ilow_matched_bytes = low_matched_bytes; - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -539,7 +539,7 @@ page_cur_insert_rec_write_log( ut_ad(rec_size == rec_offs_size(ins_offs)); cur_rec_size = rec_offs_size(cur_offs); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -821,7 +821,7 @@ page_cur_parse_insert_rec( mem_free(buf); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -890,7 +890,7 @@ page_cur_insert_rec_low( insert_buf = page_mem_alloc(page, rec_size, index, &heap_no); if (insert_buf == NULL) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(NULL); @@ -980,7 +980,7 @@ page_cur_insert_rec_low( page_cur_insert_rec_write_log(insert_rec, rec_size, current_rec, index, mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(insert_rec); @@ -1186,7 +1186,7 @@ page_copy_rec_list_end_to_created_page( slot_index--; } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1285,7 +1285,7 @@ page_cur_parse_delete_rec( page_cur_delete_rec(&cursor, index, rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap), mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/page/page0page.c b/innobase/page/page0page.c index f3217e91f58..768444008b8 100644 --- a/innobase/page/page0page.c +++ b/innobase/page/page0page.c @@ -252,13 +252,13 @@ page_mem_alloc( *heap_no = rec_get_heap_no(rec, page_is_comp(page)); block = rec_get_start(rec, offsets); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(block); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -514,7 +514,7 @@ page_copy_rec_list_end_no_locks( page_cur_move_to_next(&cur2); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -608,7 +608,7 @@ page_copy_rec_list_start( btr_search_move_or_delete_hash_entries(new_page, page, index); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -772,7 +772,7 @@ page_delete_rec_list_end( rec2 = page_rec_get_next(rec2); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -868,7 +868,7 @@ page_delete_rec_list_start( page_cur_delete_rec(&cur1, index, offsets, mtr); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -1381,7 +1381,7 @@ page_print_list( "--------------------------------\n", (ulong) (count + 1)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/rem/rem0rec.c b/innobase/rem/rem0rec.c index 542c746209b..a8f75072e65 100644 --- a/innobase/rem/rem0rec.c +++ b/innobase/rem/rem0rec.c @@ -965,7 +965,7 @@ rec_convert_dtuple_to_rec( offsets = rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap); ut_ad(rec_validate(rec, offsets)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -1412,7 +1412,7 @@ rec_print( rec_print_new(file, rec, rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/row/row0ins.c b/innobase/row/row0ins.c index 303fe5749bc..e2cb64a9742 100644 --- a/innobase/row/row0ins.c +++ b/innobase/row/row0ins.c @@ -1392,7 +1392,7 @@ do_possible_lock_wait: } exit_func: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -1660,7 +1660,7 @@ next_rec: } } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } mtr_commit(&mtr); @@ -2048,7 +2048,7 @@ function_exit: mtr_commit(&mtr); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); diff --git a/innobase/row/row0mysql.c b/innobase/row/row0mysql.c index a201368f3d5..1b0888e535b 100644 --- a/innobase/row/row0mysql.c +++ b/innobase/row/row0mysql.c @@ -3845,7 +3845,7 @@ funct_exit: que_graph_free(graph); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } diff --git a/innobase/row/row0purge.c b/innobase/row/row0purge.c index 5893e016011..abcf97110d9 100644 --- a/innobase/row/row0purge.c +++ b/innobase/row/row0purge.c @@ -126,7 +126,7 @@ row_purge_remove_clust_if_poss_low( if (0 != ut_dulint_cmp(node->roll_ptr, row_get_rec_roll_ptr(rec, index, rec_get_offsets( rec, index, offsets_, ULINT_UNDEFINED, &heap)))) { - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } /* Someone else has modified the record later: do not remove */ @@ -135,7 +135,7 @@ row_purge_remove_clust_if_poss_low( return(TRUE); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } diff --git a/innobase/row/row0row.c b/innobase/row/row0row.c index a6d3f1d5ab0..46bd51d4694 100644 --- a/innobase/row/row0row.c +++ b/innobase/row/row0row.c @@ -535,7 +535,7 @@ row_build_row_ref_in_tuple( } ut_ad(dtuple_check_typed(ref)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } diff --git a/innobase/row/row0sel.c b/innobase/row/row0sel.c index 94cf82d6a3d..d8c8fa5c2e4 100644 --- a/innobase/row/row0sel.c +++ b/innobase/row/row0sel.c @@ -125,7 +125,7 @@ row_sel_sec_rec_is_for_clust_rec( } func_exit: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(is_equal); @@ -746,7 +746,7 @@ func_exit: *out_rec = clust_rec; err = DB_SUCCESS; err_exit: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -1066,7 +1066,7 @@ row_sel_try_search_shortcut( plan->n_rows_fetched++; func_exit: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(SEL_FOUND); @@ -1780,7 +1780,7 @@ lock_wait_or_error: ut_ad(sync_thread_levels_empty_gen(TRUE)); func_exit: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -4004,7 +4004,7 @@ normal_return: func_exit: trx->op_info = ""; - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); diff --git a/innobase/row/row0undo.c b/innobase/row/row0undo.c index abe73cbe705..435c0279dbb 100644 --- a/innobase/row/row0undo.c +++ b/innobase/row/row0undo.c @@ -190,7 +190,7 @@ row_undo_search_clust_to_pcur( btr_pcur_commit_specify_mtr(&(node->pcur), &mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(ret); diff --git a/innobase/row/row0upd.c b/innobase/row/row0upd.c index 3305724a89b..a595ad00247 100644 --- a/innobase/row/row0upd.c +++ b/innobase/row/row0upd.c @@ -1224,7 +1224,7 @@ row_upd_store_row( node->n_ext_vec = btr_push_update_extern_fields(node->ext_vec, offsets, update); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } } @@ -1423,7 +1423,7 @@ row_upd_clust_rec_by_insert( index, thr, mtr); if (err != DB_SUCCESS) { mtr_commit(mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -1549,7 +1549,7 @@ row_upd_clust_rec( rec_get_offsets(rec, index, offsets_, ULINT_UNDEFINED, &heap), big_rec, mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } mtr_commit(mtr); @@ -1719,7 +1719,7 @@ row_upd_clust_step( node->index = dict_table_get_next_index(index); } exit_func: - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(err); @@ -1736,7 +1736,7 @@ row_upd_clust_step( row_upd_eval_new_vals(node->update); } - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } @@ -2016,7 +2016,7 @@ row_upd_in_place_in_select( btr_pcur_get_rec(pcur), btr_cur->index, offsets_, ULINT_UNDEFINED, &heap), UT_LIST_GET_FIRST(node->columns)); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } row_upd_eval_new_vals(node->update); diff --git a/innobase/trx/trx0rec.c b/innobase/trx/trx0rec.c index fcb7582ce73..3f3cfd3b000 100644 --- a/innobase/trx/trx0rec.c +++ b/innobase/trx/trx0rec.c @@ -1134,7 +1134,7 @@ trx_undo_report_row_operation( mutex_exit(&(trx->undo_mutex)); mtr_commit(&mtr); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(DB_OUT_OF_FILE_SPACE); @@ -1153,7 +1153,7 @@ trx_undo_report_row_operation( *roll_ptr = trx_undo_build_roll_ptr(is_insert, rseg->id, page_no, offset); - if (heap) { + if (UNIV_LIKELY_NULL(heap)) { mem_heap_free(heap); } return(DB_SUCCESS);