diff options
Diffstat (limited to 'libjava/include')
| -rw-r--r-- | libjava/include/boehm-gc.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/libjava/include/boehm-gc.h b/libjava/include/boehm-gc.h index cd421a44358..6c60c794502 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; } |

