diff options
author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-17 22:46:02 +0000 |
---|---|---|
committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-17 22:46:02 +0000 |
commit | 9affc817ced5c7bc9d16ccacee129bea8d647b80 (patch) | |
tree | 2b9e2010b6a08d12e3d9ad5ec5d770ef37f0adf4 /boehm-gc | |
parent | 900f01f23b350459c40b2d3cfe7bb05d0c392987 (diff) | |
download | gcc-9affc817ced5c7bc9d16ccacee129bea8d647b80.tar.gz |
Tue Aug 10 00:08:29 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* gc_priv.h: Merged IRIX thread changes from
include/private/gc_priv.h.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28740 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc')
-rw-r--r-- | boehm-gc/ChangeLog | 5 | ||||
-rw-r--r-- | boehm-gc/gc_priv.h | 25 |
2 files changed, 22 insertions, 8 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog index acaa638b73b..8a55a5be300 100644 --- a/boehm-gc/ChangeLog +++ b/boehm-gc/ChangeLog @@ -1,3 +1,8 @@ +Tue Aug 10 00:08:29 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> + + * gc_priv.h: Merged IRIX thread changes from + include/private/gc_priv.h. + Mon Aug 9 18:33:38 1999 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE> * Makefile.in: Rebuilt. diff --git a/boehm-gc/gc_priv.h b/boehm-gc/gc_priv.h index 29035336f62..cda9c23bacb 100644 --- a/boehm-gc/gc_priv.h +++ b/boehm-gc/gc_priv.h @@ -520,14 +520,15 @@ void GC_print_callers (/* struct callinfo info[NFRAMES] */); } # define EXIT_GC() GC_collecting = 0; # endif /* LINUX_THREADS */ -# ifdef IRIX_THREADS +# if defined(IRIX_THREADS) || defined(IRIX_JDK_THREADS) # include <pthread.h> # include <mutex.h> -# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) +# if __mips < 3 || !(defined (_ABIN32) || defined(_ABI64)) \ + || !defined(_COMPILER_VERSION) || _COMPILER_VERSION < 700 # define GC_test_and_set(addr, v) test_and_set(addr,v) # else -# define GC_test_and_set(addr, v) __test_and_set(addr,v) +# define GC_test_and_set(addr, v) __test_and_set(addr,v) # endif extern unsigned long GC_allocate_lock; /* This is not a mutex because mutexes that obey the (optional) */ @@ -546,10 +547,17 @@ void GC_print_callers (/* struct callinfo info[NFRAMES] */); # define UNLOCK() pthread_mutex_unlock(&GC_allocate_ml) # else # define LOCK() { if (GC_test_and_set(&GC_allocate_lock, 1)) GC_lock(); } -# if __mips >= 3 && (defined (_ABIN32) || defined(_ABI64)) +# if __mips >= 3 && (defined (_ABIN32) || defined(_ABI64)) \ + && defined(_COMPILER_VERSION) && _COMPILER_VERSION >= 700 # define UNLOCK() __lock_release(&GC_allocate_lock) # else -# define UNLOCK() GC_allocate_lock = 0 + /* The function call in the following should prevent the */ + /* compiler from moving assignments to below the UNLOCK. */ + /* This is probably not necessary for ucode or gcc 2.8. */ + /* It may be necessary for Ragnarok and future gcc */ + /* versions. */ +# define UNLOCK() { GC_noop1(&GC_allocate_lock); \ + *(volatile unsigned long *)(&GC_allocate_lock) = 0; } # endif # endif extern GC_bool GC_collecting; @@ -558,7 +566,7 @@ void GC_print_callers (/* struct callinfo info[NFRAMES] */); GC_collecting = 1; \ } # define EXIT_GC() GC_collecting = 0; -# endif /* IRIX_THREADS */ +# endif /* IRIX_THREADS || IRIX_JDK_THREADS */ # ifdef WIN32_THREADS # include <windows.h> GC_API CRITICAL_SECTION GC_allocate_ml; @@ -616,7 +624,7 @@ void GC_print_callers (/* struct callinfo info[NFRAMES] */); # if defined(SRC_M3) || defined(AMIGA) || defined(SOLARIS_THREADS) \ || defined(MSWIN32) || defined(MACOS) || defined(DJGPP) \ || defined(NO_SIGNALS) || defined(IRIX_THREADS) \ - || defined(LINUX_THREADS) + || defined(IRIX_JDK_THREADS) || defined(LINUX_THREADS) /* Also useful for debugging. */ /* Should probably use thr_sigsetmask for SOLARIS_THREADS. */ # define DISABLE_SIGNALS() @@ -644,7 +652,8 @@ void GC_print_callers (/* struct callinfo info[NFRAMES] */); PCR_waitForever); # else # if defined(SOLARIS_THREADS) || defined(WIN32_THREADS) \ - || defined(IRIX_THREADS) || defined(LINUX_THREADS) + || defined(IRIX_THREADS) || defined(LINUX_THREADS) \ + || defined(IRIX_JDK_THREADS) void GC_stop_world(); void GC_start_world(); # define STOP_WORLD() GC_stop_world() |