summaryrefslogtreecommitdiff
path: root/libjava/boehm.cc
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-21 22:07:30 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2006-08-21 22:07:30 +0000
commit33b8ea2a147a3bf8f4617b0399cbb2b2dbbb6f9e (patch)
tree4c9de9e1ba2a27a47f6d8da1bbd87446fe43e48f /libjava/boehm.cc
parente405ec65e3d665ec66e9356351e7da3e02dd8232 (diff)
downloadgcc-33b8ea2a147a3bf8f4617b0399cbb2b2dbbb6f9e.tar.gz
boehm-gc
PR libgcj/13212: * configure.ac: Check for pthread_getattr_np(). Remove GC_PTHREAD_SYM_VERSION detection. * include/gc.h (GC_register_my_thread, GC_unregister_my_thread, GC_get_thread_stack_base): New declarations. * pthread_support.c (GC_register_my_thread, GC_unregister_my_thread, GC_get_thread_stack_base): New functions. (GC_delete_thread): Don't try to free the first_thread. * misc.c (GC_init_inner): Use GC_get_thread_stack_base() if possible. (pthread_create_, constr): Removed. (pthread_create): Don't rename. * include/gc_ext_config.h.in: Rebuilt. * include/gc_pthread_redirects.h (pthread_create): Define unconditionally. * include/gc_config.h.in: Rebuilt. * configure: Rebuilt. libjava * java/lang/natThread.cc (_Jv_AttachCurrentThread): Attach thread to GC. (_Jv_DetachCurrentThread): Detach thread from GC. * include/boehm-gc.h (_Jv_GCAttachThread, _Jv_GCDetachThread): Declare. * boehm.cc (_Jv_GCAttachThread): New function. (_Jv_GCDetachThread): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116313 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/boehm.cc')
-rw-r--r--libjava/boehm.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/libjava/boehm.cc b/libjava/boehm.cc
index 6a5603d78a5..f96128e191d 100644
--- a/libjava/boehm.cc
+++ b/libjava/boehm.cc
@@ -695,3 +695,21 @@ _Jv_ResumeThread (_Jv_Thread_t *thread)
GC_resume_thread (_Jv_GetPlatformThreadID (thread));
#endif
}
+
+void
+_Jv_GCAttachThread ()
+{
+ // The registration interface is only defined on posixy systems and
+ // only actually works if pthread_getattr_np is defined.
+#ifdef HAVE_PTHREAD_GETATTR_NP
+ GC_register_my_thread ();
+#endif
+}
+
+void
+_Jv_GCDetachThread ()
+{
+#ifdef HAVE_PTHREAD_GETATTR_NP
+ GC_unregister_my_thread ();
+#endif
+}