Commit 179977c1 by Bryce McKinlay

This commit was generated by cvs2svn to compensate for changes in r33746,

which included commits to RCS files with non-trunk default branches.

From-SVN: r33747
parent 5a3c491c
...@@ -282,4 +282,8 @@ DCL_LOCK_STATE; ...@@ -282,4 +282,8 @@ DCL_LOCK_STATE;
return((GC_PTR) op); return((GC_PTR) op);
} }
#else
char GC_no_gcj_support;
#endif /* GC_GCJ_SUPPORT */ #endif /* GC_GCJ_SUPPORT */
...@@ -255,12 +255,12 @@ inline gc_cleanup::gc_cleanup() { ...@@ -255,12 +255,12 @@ inline gc_cleanup::gc_cleanup() {
GC_finalization_proc oldProc; GC_finalization_proc oldProc;
void* oldData; void* oldData;
void* base = GC_base( (void *) this ); void* base = GC_base( (void *) this );
if (0 == base) return; if (0 != base) {
GC_REGISTER_FINALIZER_IGNORE_SELF( GC_REGISTER_FINALIZER_IGNORE_SELF(
base, cleanup, (void*) ((char*) this - (char*) base), base, (GC_finalization_proc)cleanup, (void*) ((char*) this - (char*) base),
&oldProc, &oldData ); &oldProc, &oldData );
if (0 != oldProc) { if (0 != oldProc) {
GC_REGISTER_FINALIZER_IGNORE_SELF( base, oldProc, oldData, 0, 0 );}} GC_REGISTER_FINALIZER_IGNORE_SELF( base, oldProc, oldData, 0, 0 );}}}
inline void* operator new( inline void* operator new(
size_t size, size_t size,
......
...@@ -1405,7 +1405,7 @@ extern GC_bool GC_objects_are_marked; /* There are marked objects in */ ...@@ -1405,7 +1405,7 @@ extern GC_bool GC_objects_are_marked; /* There are marked objects in */
extern GC_bool GC_incremental; extern GC_bool GC_incremental;
/* Using incremental/generational collection. */ /* Using incremental/generational collection. */
#else #else
# define GC_incremental TRUE # define GC_incremental FALSE
/* Hopefully allow optimizer to remove some code. */ /* Hopefully allow optimizer to remove some code. */
#endif #endif
......
...@@ -386,6 +386,11 @@ ...@@ -386,6 +386,11 @@
* to the nearest plausible page boundary, and use that instead * to the nearest plausible page boundary, and use that instead
* of STACKBOTTOM. * of STACKBOTTOM.
* *
* Gustavo Rodriguez-Rivera points out that on most (all?) Unix machines,
* the value of environ is a pointer that can serve as STACKBOTTOM.
* I expect that HEURISTIC2 can be replaced by this approach, which
* interferes far less with debugging.
*
* If no expression for STACKBOTTOM can be found, and neither of the above * If no expression for STACKBOTTOM can be found, and neither of the above
* heuristics are usable, the collector can still be used with all of the above * heuristics are usable, the collector can still be used with all of the above
* undefined, provided one of the following is done: * undefined, provided one of the following is done:
...@@ -553,6 +558,7 @@ ...@@ -553,6 +558,7 @@
/* This was 2, but that didn't sound right. */ /* This was 2, but that didn't sound right. */
# define OS_TYPE "LINUX" # define OS_TYPE "LINUX"
# define HEURISTIC1 # define HEURISTIC1
# define DYNAMIC_LOADING
# undef STACK_GRAN # undef STACK_GRAN
# define STACK_GRAN 0x10000000 # define STACK_GRAN 0x10000000
/* Stack usually starts at 0x80000000 */ /* Stack usually starts at 0x80000000 */
...@@ -990,7 +996,11 @@ ...@@ -990,7 +996,11 @@
/* this.) */ /* this.) */
# define STACKBOTTOM ((ptr_t) 0x7b033000) /* from /etc/conf/h/param.h */ # define STACKBOTTOM ((ptr_t) 0x7b033000) /* from /etc/conf/h/param.h */
# else # else
# define HEURISTIC2 /* Gustavo Rodriguez-Rivera suggested changing HEURISTIC2 */
/* to this. We'll probably do this on other platforms, too. */
/* For now I'll use it where I can test it. */
extern char ** environ;
# define STACKBOTTOM ((ptr_t)environ)
# endif # endif
# define STACK_GROWS_UP # define STACK_GROWS_UP
# define DYNAMIC_LOADING # define DYNAMIC_LOADING
...@@ -1076,7 +1086,6 @@ ...@@ -1076,7 +1086,6 @@
/* Requires Linux 2.3.47 or later. */ /* Requires Linux 2.3.47 or later. */
extern int _end; extern int _end;
# define DATAEND (&_end) # define DATAEND (&_end)
/* PREFETCH appears to have a large performance impact. */
# define PREFETCH(x) \ # define PREFETCH(x) \
__asm__ (" lfetch [%0]": : "r"((void *)(x))) __asm__ (" lfetch [%0]": : "r"((void *)(x)))
# define PREFETCH_FOR_WRITE(x) \ # define PREFETCH_FOR_WRITE(x) \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment