From: Navarrop Date: Tue, 26 Apr 2011 15:10:13 +0000 (+0200) Subject: Use function mergesort against qsort if possible. X-Git-Tag: v3_6_rc3~95 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/621567e097f236cdb81007637323ecc23ac26d45 Use function mergesort against qsort if possible. --- diff --git a/buildtools/Cmake/CompleteInFiles.cmake b/buildtools/Cmake/CompleteInFiles.cmake index 4ec0567131..74503d0803 100644 --- a/buildtools/Cmake/CompleteInFiles.cmake +++ b/buildtools/Cmake/CompleteInFiles.cmake @@ -82,6 +82,7 @@ CHECK_FUNCTION_EXISTS(asprintf HAVE_ASPRINTF) CHECK_FUNCTION_EXISTS(vasprintf HAVE_VASPRINTF) CHECK_FUNCTION_EXISTS(makecontext HAVE_MAKECONTEXT) CHECK_FUNCTION_EXISTS(mmap HAVE_MMAP) +CHECK_FUNCTION_EXISTS(mergesort HAVE_MERGESORT) #Check if __thread is defined exec_program("${CMAKE_C_COMPILER} ${CMAKE_HOME_DIRECTORY}/buildtools/Cmake/test_prog/prog_thread_storage.c" diff --git a/buildtools/Cmake/gras_config.h.in b/buildtools/Cmake/gras_config.h.in index 2443ae7aa1..ed0517f623 100644 --- a/buildtools/Cmake/gras_config.h.in +++ b/buildtools/Cmake/gras_config.h.in @@ -42,6 +42,9 @@ #cmakedefine MMALLOC_WANT_OVERIDE_LEGACY @MMALLOC_WANT_OVERIDE_LEGACY@ #cmakedefine HAVE_MC @HAVE_MC@ +/* Set to true if have the mergesort function */ +#cmakedefine HAVE_MERGESORT @HAVE_MERGESORT@ + /* Set to true if lib pcre is present */ #cmakedefine HAVE_PCRE_LIB @HAVE_PCRE_LIB@ diff --git a/src/xbt/dynar.c b/src/xbt/dynar.c index 51d207b14a..7c3bcc6eff 100644 --- a/src/xbt/dynar.c +++ b/src/xbt/dynar.c @@ -745,8 +745,11 @@ XBT_INLINE void xbt_dynar_sort(xbt_dynar_t dynar, _dynar_lock(dynar); +#ifdef HAVE_MERGESORT + mergesort(dynar->data, dynar->used, dynar->elmsize, compar_fn); +#else qsort(dynar->data, dynar->used, dynar->elmsize, compar_fn); - +#endif _dynar_unlock(dynar); }