| version 1.1.1.1, 1999/12/03 07:39:10 |
version 1.2, 2000/04/10 08:31:32 |
|
|
| # include <synch.h> |
# include <synch.h> |
| # endif |
# endif |
| |
|
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) || defined(HPUX_THREADS) |
| # include <pthread.h> |
# include <pthread.h> |
| # endif |
# endif |
| |
|
|
|
| # include <process.h> |
# include <process.h> |
| static CRITICAL_SECTION incr_cs; |
static CRITICAL_SECTION incr_cs; |
| # endif |
# endif |
| # if defined(PCR) || defined(SOLARIS_THREADS) || defined(WIN32_THREADS) |
|
| # define THREADS |
|
| # endif |
|
| |
|
| # ifdef AMIGA |
# ifdef AMIGA |
| long __stack = 200000; |
long __stack = 200000; |
|
|
| } |
} |
| |
|
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) \ |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) \ |
| || defined(SOLARIS_PTHREADS) |
|| defined(SOLARIS_PTHREADS) || defined(HPUX_THREADS) |
| void fork_a_thread() |
void fork_a_thread() |
| { |
{ |
| pthread_t t; |
pthread_t t; |
| Line 362 void reverse_test() |
|
| Line 359 void reverse_test() |
|
| d = uncollectable_ints(1, 100); |
d = uncollectable_ints(1, 100); |
| e = uncollectable_ints(1, 1); |
e = uncollectable_ints(1, 1); |
| /* Check that realloc updates object descriptors correctly */ |
/* Check that realloc updates object descriptors correctly */ |
| f = (sexpr *)GC_malloc(4 * sizeof(sexpr)); |
f = (sexpr *)GC_MALLOC(4 * sizeof(sexpr)); |
| f = (sexpr *)GC_realloc((GC_PTR)f, 6 * sizeof(sexpr)); |
f = (sexpr *)GC_REALLOC((GC_PTR)f, 6 * sizeof(sexpr)); |
| f[5] = ints(1,17); |
f[5] = ints(1,17); |
| g = (sexpr *)GC_malloc(513 * sizeof(sexpr)); |
g = (sexpr *)GC_MALLOC(513 * sizeof(sexpr)); |
| g = (sexpr *)GC_realloc((GC_PTR)g, 800 * sizeof(sexpr)); |
g = (sexpr *)GC_REALLOC((GC_PTR)g, 800 * sizeof(sexpr)); |
| g[799] = ints(1,18); |
g[799] = ints(1,18); |
| h = (sexpr *)GC_malloc(1025 * sizeof(sexpr)); |
h = (sexpr *)GC_MALLOC(1025 * sizeof(sexpr)); |
| h = (sexpr *)GC_realloc((GC_PTR)h, 2000 * sizeof(sexpr)); |
h = (sexpr *)GC_REALLOC((GC_PTR)h, 2000 * sizeof(sexpr)); |
| h[1999] = ints(1,19); |
h[1999] = ints(1,19); |
| /* Try to force some collections and reuse of small list elements */ |
/* Try to force some collections and reuse of small list elements */ |
| for (i = 0; i < 10; i++) { |
for (i = 0; i < 10; i++) { |
| Line 453 VOLATILE int dropped_something = 0; |
|
| Line 450 VOLATILE int dropped_something = 0; |
|
| static mutex_t incr_lock; |
static mutex_t incr_lock; |
| mutex_lock(&incr_lock); |
mutex_lock(&incr_lock); |
| # endif |
# endif |
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) || defined(HPUX_THREADS) |
| static pthread_mutex_t incr_lock = PTHREAD_MUTEX_INITIALIZER; |
static pthread_mutex_t incr_lock = PTHREAD_MUTEX_INITIALIZER; |
| pthread_mutex_lock(&incr_lock); |
pthread_mutex_lock(&incr_lock); |
| # endif |
# endif |
| Line 471 VOLATILE int dropped_something = 0; |
|
| Line 468 VOLATILE int dropped_something = 0; |
|
| # ifdef SOLARIS_THREADS |
# ifdef SOLARIS_THREADS |
| mutex_unlock(&incr_lock); |
mutex_unlock(&incr_lock); |
| # endif |
# endif |
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) || defined(HPUX_THREADS) |
| pthread_mutex_unlock(&incr_lock); |
pthread_mutex_unlock(&incr_lock); |
| # endif |
# endif |
| # ifdef WIN32_THREADS |
# ifdef WIN32_THREADS |
|
|
| static mutex_t incr_lock; |
static mutex_t incr_lock; |
| mutex_lock(&incr_lock); |
mutex_lock(&incr_lock); |
| # endif |
# endif |
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) \ |
| |
|| defined(HPUX_THREADS) |
| static pthread_mutex_t incr_lock = PTHREAD_MUTEX_INITIALIZER; |
static pthread_mutex_t incr_lock = PTHREAD_MUTEX_INITIALIZER; |
| pthread_mutex_lock(&incr_lock); |
pthread_mutex_lock(&incr_lock); |
| # endif |
# endif |
|
|
| # ifdef SOLARIS_THREADS |
# ifdef SOLARIS_THREADS |
| mutex_unlock(&incr_lock); |
mutex_unlock(&incr_lock); |
| # endif |
# endif |
| # if defined(IRIX_THREADS) || defined(LINUX_THREADS) |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) \ |
| |
|| defined(HPUX_THREADS) |
| pthread_mutex_unlock(&incr_lock); |
pthread_mutex_unlock(&incr_lock); |
| # endif |
# endif |
| # ifdef WIN32_THREADS |
# ifdef WIN32_THREADS |
| Line 610 thread_key_t fl_key; |
|
| Line 609 thread_key_t fl_key; |
|
| |
|
| void * alloc8bytes() |
void * alloc8bytes() |
| { |
{ |
| # ifdef SMALL_CONFIG |
# if defined(SMALL_CONFIG) || defined(GC_DEBUG) |
| return(GC_malloc(8)); |
return(GC_MALLOC(8)); |
| # else |
# else |
| void ** my_free_list_ptr; |
void ** my_free_list_ptr; |
| void * my_free_list; |
void * my_free_list; |
| Line 644 void * alloc8bytes() |
|
| Line 643 void * alloc8bytes() |
|
| #else |
#else |
| |
|
| # if defined(_SOLARIS_PTHREADS) || defined(IRIX_THREADS) \ |
# if defined(_SOLARIS_PTHREADS) || defined(IRIX_THREADS) \ |
| || defined(LINUX_THREADS) |
|| defined(LINUX_THREADS) || defined(HPUX_THREADS) |
| pthread_key_t fl_key; |
pthread_key_t fl_key; |
| |
|
| void * alloc8bytes() |
void * alloc8bytes() |
| Line 857 void run_one_test() |
|
| Line 856 void run_one_test() |
|
| (void)GC_printf0("GC_malloc_uncollectable(0) failed\n"); |
(void)GC_printf0("GC_malloc_uncollectable(0) failed\n"); |
| FAIL; |
FAIL; |
| } |
} |
| |
GC_FREE(0); |
| GC_is_valid_displacement_print_proc = fail_proc1; |
GC_is_valid_displacement_print_proc = fail_proc1; |
| GC_is_visible_print_proc = fail_proc1; |
GC_is_visible_print_proc = fail_proc1; |
| x = GC_malloc(16); |
x = GC_malloc(16); |
| Line 879 void run_one_test() |
|
| Line 879 void run_one_test() |
|
| FAIL; |
FAIL; |
| } |
} |
| if (!TEST_FAIL_COUNT(1)) { |
if (!TEST_FAIL_COUNT(1)) { |
| # if!(defined(RS6000) || defined(POWERPC)) |
# if!(defined(RS6000) || defined(POWERPC) || defined(IA64)) |
| /* ON RS6000s function pointers point to a descriptor in the */ |
/* ON RS6000s function pointers point to a descriptor in the */ |
| /* data segment, so there should have been no failures. */ |
/* data segment, so there should have been no failures. */ |
| (void)GC_printf0("GC_is_visible produced wrong failure indication\n"); |
(void)GC_printf0("GC_is_visible produced wrong failure indication\n"); |
| Line 1030 void SetMinimumStack(long minSize) |
|
| Line 1030 void SetMinimumStack(long minSize) |
|
| |
|
| |
|
| #if !defined(PCR) && !defined(SOLARIS_THREADS) && !defined(WIN32_THREADS) \ |
#if !defined(PCR) && !defined(SOLARIS_THREADS) && !defined(WIN32_THREADS) \ |
| && !defined(IRIX_THREADS) && !defined(LINUX_THREADS) || defined(LINT) |
&& !defined(IRIX_THREADS) && !defined(LINUX_THREADS) \ |
| |
&& !defined(HPUX_THREADS) || defined(LINT) |
| #ifdef MSWIN32 |
#ifdef MSWIN32 |
| int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prev, LPSTR cmd, int n) |
int APIENTRY WinMain(HINSTANCE instance, HINSTANCE prev, LPSTR cmd, int n) |
| #else |
#else |
|
|
| } |
} |
| #endif |
#endif |
| |
|
| #if defined(SOLARIS_THREADS) || defined(IRIX_THREADS) || defined(LINUX_THREADS) |
#if defined(SOLARIS_THREADS) || defined(IRIX_THREADS) \ |
| |
|| defined(HPUX_THREADS) || defined(LINUX_THREADS) |
| void * thr_run_one_test(void * arg) |
void * thr_run_one_test(void * arg) |
| { |
{ |
| run_one_test(); |
run_one_test(); |
|
|
| *((volatile char *)&code - 1024*1024) = 0; /* Require 1 Mb */ |
*((volatile char *)&code - 1024*1024) = 0; /* Require 1 Mb */ |
| # endif /* IRIX_THREADS */ |
# endif /* IRIX_THREADS */ |
| pthread_attr_init(&attr); |
pthread_attr_init(&attr); |
| # ifdef IRIX_THREADS |
# if defined(IRIX_THREADS) || defined(HPUX_THREADS) |
| pthread_attr_setstacksize(&attr, 1000000); |
pthread_attr_setstacksize(&attr, 1000000); |
| # endif |
# endif |
| n_tests = 0; |
n_tests = 0; |
|
|
| (void) GC_printf0("Emulating dirty bits with mprotect/signals\n"); |
(void) GC_printf0("Emulating dirty bits with mprotect/signals\n"); |
| # endif |
# endif |
| (void) GC_set_warn_proc(warn_proc); |
(void) GC_set_warn_proc(warn_proc); |
| if (pthread_key_create(&fl_key, 0) != 0) { |
if ((code = pthread_key_create(&fl_key, 0)) != 0) { |
| (void)GC_printf1("Key creation failed %lu\n", (unsigned long)code); |
(void)GC_printf1("Key creation failed %lu\n", (unsigned long)code); |
| FAIL; |
FAIL; |
| } |
} |
|
|
| return(0); |
return(0); |
| } |
} |
| #endif /* pthreads */ |
#endif /* pthreads */ |
| #endif /* SOLARIS_THREADS || IRIX_THREADS || LINUX_THREADS */ |
#endif /* SOLARIS_THREADS || IRIX_THREADS || LINUX_THREADS || HPUX_THREADS */ |