aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorHans Boehm <Hans_Boehm@hp.com>2001-10-25 17:29:41 +0000
committerHans Boehm <hboehm@gcc.gnu.org>2001-10-25 17:29:41 +0000
commite16ffa0d616f9e073bca1c2ad0b2521247178194 (patch)
tree57ca073a3cb01dbb67e2b5e4532948f28c504d56 /libjava
parentcdd90341d6b8f78828072d555afcb2aaba80465c (diff)
downloadgcc-e16ffa0d616f9e073bca1c2ad0b2521247178194.zip
gcc-e16ffa0d616f9e073bca1c2ad0b2521247178194.tar.gz
gcc-e16ffa0d616f9e073bca1c2ad0b2521247178194.tar.bz2
boehm-gc.h: Call thread local allocation functions if THREAD_LOCAL_ALLOC is defined.
* include/boehm-gc.h: Call thread local allocation functions if THREAD_LOCAL_ALLOC is defined. From-SVN: r46490
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/include/boehm-gc.h20
2 files changed, 23 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index a01c02eb..939f044 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2001-10-25 Hans Boehm <Hans_Boehm@hp.com>
+
+ * include/boehm-gc.h: Call thread local allocation functions
+ if THREAD_LOCAL_ALLOC is defined.
+
2001-10-25 Bryce McKinlay <bryce@waitaki.otago.ac.nz>
* java/lang/natClassLoader.cc (_Jv_RegisterClassHookDefault): Use
diff --git a/libjava/include/boehm-gc.h b/libjava/include/boehm-gc.h
index cd421a4..6c60c79 100644
--- a/libjava/include/boehm-gc.h
+++ b/libjava/include/boehm-gc.h
@@ -28,23 +28,39 @@ extern "C"
extern "C" void * GC_gcj_malloc(size_t, void *);
extern "C" void * GC_malloc_atomic(size_t);
+#ifdef THREAD_LOCAL_ALLOC
+extern "C" void * GC_local_gcj_malloc(size_t, void *);
+extern "C" void * GC_local_malloc_atomic(size_t);
+#endif
inline void *
_Jv_AllocObj (jsize size, jclass klass)
{
// This should call GC_GCJ_MALLOC, but that would involve
// including gc.h.
+#ifdef THREAD_LOCAL_ALLOC
+ return GC_local_gcj_malloc (size, klass->vtable);
+#else
return GC_gcj_malloc (size, klass->vtable);
+#endif
}
inline void *
_Jv_AllocPtrFreeObj (jsize size, jclass klass)
{
#ifdef JV_HASH_SYNCHRONIZATION
- void * obj = GC_malloc_atomic(size);
+# ifdef THREAD_LOCAL_ALLOC
+ void * obj = GC_local_malloc_atomic(size);
+# else
+ void * obj = GC_malloc_atomic(size);
+# endif
*((_Jv_VTable **) obj) = klass->vtable;
#else
- void * obj = GC_gcj_malloc(size, klass->vtable);
+# ifdef THREAD_LOCAL_ALLOC
+ void * obj = GC_local_gcj_malloc(size, klass->vtable);
+# else
+ void * obj = GC_gcj_malloc(size, klass->vtable);
+# endif
#endif
return obj;
}