fixes of OpenSolaris

Make the GC always use the mmap() block cache, since mmap() on Solaris
allocates much more than a page when a single page is requested.

Enable places and threads by default on x86 and x86_64.

Fix pthread-related compilation flags.
This commit is contained in:
Matthew Flatt 2013-08-09 06:36:55 -06:00
parent 02e33983d0
commit d93ce089a3
4 changed files with 36 additions and 3 deletions

13
racket/src/configure vendored
View File

@ -2512,6 +2512,7 @@ STRIP_DEBUG=":"
enable_strip_by_default=yes
use_flag_pthread=yes
use_flag_posix_pthread=no
skip_iconv_check=no
###### OSKit stuff #######
@ -4073,6 +4074,15 @@ case "$host_os" in
need_gcc_static_libgcc="yes"
check_gcc_dash_e="yes"
try_poll_syscall="yes"
use_flag_pthread="no"
use_flag_posix_pthread="yes"
case "$host_cpu" in
x86_64|i386|i486|i586|i686)
enable_parallel_by_default=yes
;;
*)
;;
esac
;;
aix*)
enable_cgcdefault="yes"
@ -8803,6 +8813,9 @@ if test "${enable_pthread}" = "yes" ; then
PREFLAGS="$PREFLAGS -pthread"
LDFLAGS="$LDFLAGS -pthread"
fi
if test "${use_flag_posix_pthread}" = "yes" ; then
PREFLAGS="$PREFLAGS -D_POSIX_PTHREAD_SEMANTICS"
fi
cat >>confdefs.h <<\_ACEOF
#define USE_PTHREAD_INSTEAD_OF_ITIMER 1

View File

@ -408,6 +408,7 @@ STRIP_DEBUG=":"
enable_strip_by_default=yes
use_flag_pthread=yes
use_flag_posix_pthread=no
skip_iconv_check=no
###### OSKit stuff #######
@ -570,6 +571,15 @@ case "$host_os" in
need_gcc_static_libgcc="yes"
check_gcc_dash_e="yes"
try_poll_syscall="yes"
use_flag_pthread="no"
use_flag_posix_pthread="yes"
case "$host_cpu" in
x86_64|i386|i486|i586|i686)
enable_parallel_by_default=yes
;;
*)
;;
esac
;;
aix*)
enable_cgcdefault="yes"
@ -1204,6 +1214,9 @@ if test "${enable_pthread}" = "yes" ; then
PREFLAGS="$PREFLAGS -pthread"
LDFLAGS="$LDFLAGS -pthread"
fi
if test "${use_flag_posix_pthread}" = "yes" ; then
PREFLAGS="$PREFLAGS -D_POSIX_PTHREAD_SEMANTICS"
fi
AC_DEFINE(USE_PTHREAD_INSTEAD_OF_ITIMER, 1, [Pthread timer enabled])
[ msg="whether pthread_rwlock is available" ]

View File

@ -16,8 +16,8 @@ enum {
MMU_WRITABLE = 1,
};
#if defined(MZ_USE_PLACES) && !defined(_WIN32)
#define USE_BLOCK_CACHE
#if (defined(MZ_USE_PLACES) && !defined(_WIN32)) || defined(PREFER_MMAP_LARGE_BLOCKS)
# define USE_BLOCK_CACHE
#endif
struct BlockCache;

View File

@ -114,6 +114,8 @@
# define USE_ON_EXIT_FOR_ATEXIT
# endif
# define PREFER_MMAP_LARGE_BLOCKS
# define FMOD_CAN_RETURN_POS_ZERO
# ifdef i386
@ -1610,9 +1612,14 @@
/* Miscellaneous */
/***********************/
/* USE_MAP_ANON indicates that mmap should use BSD's MAP_ANON flag
/* USE_MAP_ANON indicates that mmap() should use BSD's MAP_ANON flag
rather than trying to open /dev/zero */
/* PREFER_MMAP_LARGE_BLOCKS indicates that mmap() should be called with
large block sizes as much as possible, because the actual allocated
size for small requests (on the order of the page size) is much
larger than the request. */
/* REGISTER_POOR_MACHINE guides a hand optimization that seems to
be work best one way for Sparc machines, and better the other
way for x86 machines. */