diff options
author | Dan Albert <danalbert@google.com> | 2016-02-24 13:48:45 -0800 |
---|---|---|
committer | Dan Albert <danalbert@google.com> | 2016-02-24 13:51:18 -0800 |
commit | b9de1157289455b0ca26daff519d4a0ddcd1fa13 (patch) | |
tree | 4c56cc0a34b91f17033a40a455f26652304f7b8d /gcc-4.8.3/libjava/include/boehm-gc.h | |
parent | 098157a754787181cfa10e71325832448ddcea98 (diff) | |
download | toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.gz toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.tar.bz2 toolchain_gcc-b9de1157289455b0ca26daff519d4a0ddcd1fa13.zip |
Update 4.8.1 to 4.8.3.
My previous drop was the wrong version. The platform mingw is
currently using 4.8.3, not 4.8.1 (not sure how I got that wrong).
From ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2.
Bug: http://b/26523949
Change-Id: Id85f1bdcbbaf78c7d0b5a69e74c798a08f341c35
Diffstat (limited to 'gcc-4.8.3/libjava/include/boehm-gc.h')
-rw-r--r-- | gcc-4.8.3/libjava/include/boehm-gc.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/gcc-4.8.3/libjava/include/boehm-gc.h b/gcc-4.8.3/libjava/include/boehm-gc.h new file mode 100644 index 000000000..ed8ac6aa2 --- /dev/null +++ b/gcc-4.8.3/libjava/include/boehm-gc.h @@ -0,0 +1,98 @@ +// -*- c++ -*- +// boehm-gc.h - Defines for Boehm collector. + +/* Copyright (C) 1998, 1999, 2002, 2004, 2006, 2007 Free Software Foundation + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +#ifndef __JV_BOEHM_GC__ +#define __JV_BOEHM_GC__ + +#define JV_MARKOBJ_DECL void *::_Jv_MarkObj (void *, void *, void *, void *) +#define JV_MARKARRAY_DECL void *::_Jv_MarkArray (void *, void *, void *, void *) + +extern "C" +{ + void *_Jv_MarkObj (void *, void *, void *, void *); + void *_Jv_MarkArray (void *, void *, void *, void *); + void _Jv_RegisterLibForGc (const void *); +} + +// Enough stuff to inline _Jv_AllocObj. Ugly. +#include <gcj/javaprims.h> +#include <java/lang/Class.h> +#include <string.h> + +#include <gc_ext_config.h> // for THREAD_LOCAL_ALLOC + +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 + +#ifndef LIBGCJ_GC_DEBUG + +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 +# 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 +# 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; +} + +#else /* LIBGCJ_GC_DEBUG */ + +void * +_Jv_AllocObj (jsize size, jclass klass); + +void * +_Jv_AllocPtrFreeObj (jsize size, jclass klass); + +#endif /* LIBGCJ_GC_DEBUG */ + +void _Jv_GCAttachThread (); + +void _Jv_GCDetachThread (); + +// _Jv_AllocBytes (jsize size) should go here, too. But clients don't +// usually include this header. + +// Suspend the given thread. This includes suspending the calling thread. +extern "C" void _Jv_SuspendThread (_Jv_Thread_t *); + +// Resume a suspended thread. +extern "C" void _Jv_ResumeThread (_Jv_Thread_t *); + +// Is the given thread suspended? +extern "C" int _Jv_IsThreadSuspended (_Jv_Thread_t *); +#endif /* __JV_BOEHM_GC__ */ |