This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
GC 6.0alpha7 local changes
- To: java-patches at gcc dot gnu dot org
- Subject: GC 6.0alpha7 local changes
- From: Bryce McKinlay <bryce at waitaki dot otago dot ac dot nz>
- Date: Tue, 22 May 2001 18:36:16 +1200
Last night I imported the latest GC version onto the mainline and
cleaned out a few more local changes which were obviously duplicated
or obsolete. Here's a diff which shows all of the current remaining
local changes vs. Hans' distribution.
I've tested the new GC on i686 linux and had no
testsuite/GCTest/GCBench regressions.
regards
[ bryce ]
Index: Makefile.am
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/Makefile.am,v
retrieving revision 1.1.1.1
retrieving revision 1.22
diff -u -r1.1.1.1 -r1.22
--- Makefile.am 2001/05/21 06:39:24 1.1.1.1
+++ Makefile.am 2001/05/21 08:35:12 1.22
@@ -1,16 +1,3 @@
-# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
-#
-# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
-# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
-#
-# Permission is hereby granted to use or copy this program
-# for any purpose, provided the above notices are retained on all copies.
-# Permission to modify the code and to distribute modified code is granted,
-# provided the above notices are retained, and a notice that the code was
-# modified is included with the above copyright notice.
-#
-# Original author: Tom Tromey
-
## Process this file with automake to produce Makefile.in.
## FIXME: `make dist' in this directory will not currently work. Many
@@ -38,13 +25,11 @@
toolexeclib_LTLIBRARIES = $(target_all)
EXTRA_LTLIBRARIES = libgcjgc.la
-libgcjgc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c \
-gcconfig.h dbg_mlc.c dyn_load.c finalize.c gc.h gc_alloc.h gc_cpp.h \
-gc_hdrs.h gc_mark.h gc_priv.h gc_private.h gc_typed.h gcj_mlc.c headers.c \
-hpux_irix_threads.c linux_threads.c malloc.c mallocx.c mark.c mark_rts.c \
-misc.c new_hblk.c obj_map.c os_dep.c pcr_interface.c ptr_chck.c \
-real_malloc.c reclaim.c solaris_pthreads.c solaris_threads.c \
-solaris_threads.h stubborn.c typd_mlc.c version.h weakpointer.h
+libgcjgc_la_SOURCES = allchblk.c alloc.c blacklst.c checksums.c dbg_mlc.c \
+dyn_load.c finalize.c gc_dlopen.c gcj_mlc.c headers.c irix_threads.c \
+linux_threads.c malloc.c mallocx.c mark.c mark_rts.c misc.c new_hblk.c \
+obj_map.c os_dep.c pcr_interface.c ptr_chck.c real_malloc.c reclaim.c \
+solaris_pthreads.c solaris_threads.c specific.c stubborn.c typd_mlc.c`
# Include THREADLIBS here to ensure that the correct versions of
# linuxthread semaphore functions get linked:
@@ -52,9 +37,10 @@
libgcjgc_la_DEPENDENCIES = @addobjs@
libgcjgc_la_LDFLAGS = -version-info 1:1:0 -rpath $(toolexeclibdir)
-EXTRA_libgcjgc_la_SOURCES = alpha_mach_dep.s mips_sgi_mach_dep.s \
-mips_ultrix_mach_dep.s rs6000_mach_dep.s sparc_mach_dep.s \
-sparc_sunos4_mach_dep.s mach_dep.c ecos.cc
+EXTRA_libgcjgc_la_SOURCES = alpha_mach_dep.s hpux_test_and_clear.s \
+mips_sgi_mach_dep.s mips_ultrix_mach_dep.s powerpc_macosx_mach_dep.s \
+rs6000_mach_dep.s sparc_mach_dep.s sparc_netbsd_mach_dep.s \
+sparc_sunos4_mach_dep.s
AM_CXXFLAGS = @BOEHM_GC_CFLAGS@
AM_CFLAGS = @BOEHM_GC_CFLAGS@
@@ -68,7 +54,8 @@
## FIXME: relies on internal code generated by automake.
all_objs = @addobjs@ $(libgcjgc_la_OBJECTS)
-$(all_objs) : gcconfig.h gc_priv.h gc_hdrs.h gc.h gc_mark.h
+$(all_objs) : include/private/gcconfig.h include/private/gc_priv.h \
+include/private/gc_hdrs.h include/gc.h include/gc_gcj.h include/gc_mark.h
## FIXME: we shouldn't have to do this, but automake forces us to.
.s.lo:
Index: alloc.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/alloc.c,v
retrieving revision 1.1.1.5
retrieving revision 1.6
diff -u -r1.1.1.5 -r1.6
--- alloc.c 2001/05/21 06:39:24 1.1.1.5
+++ alloc.c 2001/05/21 08:35:13 1.6
@@ -115,6 +115,7 @@
unsigned long time_diff;
if ((count++ & 3) != 0) return(0);
+#ifndef NO_CLOCK
GET_TIME(current_time);
time_diff = MS_TIME_DIFF(current_time,GC_start_time);
if (time_diff >= TIME_LIMIT) {
@@ -127,6 +128,7 @@
# endif
return(1);
}
+#endif
return(0);
}
#endif /* !SMALL_CONFIG */
@@ -272,7 +274,9 @@
/* We try to mark with the world stopped. */
/* If we run out of time, this turns into */
/* incremental marking. */
+#ifndef NO_CLOCK
GET_TIME(GC_start_time);
+#endif
if (GC_stopped_mark(GC_timeout_stop_func)) {
# ifdef SAVE_CALL_CHAIN
GC_save_callers(GC_last_stack);
Index: alpha_mach_dep.s
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/alpha_mach_dep.s,v
retrieving revision 1.1.1.3
retrieving revision 1.4
diff -u -r1.1.1.3 -r1.4
--- alpha_mach_dep.s 2000/04/19 02:29:15 1.1.1.3
+++ alpha_mach_dep.s 2000/04/19 10:09:57 1.4
@@ -1,4 +1,3 @@
- # $Id: alpha_mach_dep.s,v 1.1.1.3 2000/04/19 02:29:15 bryce Exp $
# This is BROKEN on a 21264 running gcc, and probably in other cases.
# The compiler may spill pointers to fp registers, and this code doesn't
Index: configure.in
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/configure.in,v
retrieving revision 1.1.1.1
retrieving revision 1.24
diff -u -r1.1.1.1 -r1.24
--- configure.in 2001/05/21 06:39:24 1.1.1.1
+++ configure.in 2001/05/21 08:35:13 1.24
@@ -1,19 +1,6 @@
-# Copyright (c) 1999-2001 by Red Hat, Inc. All rights reserved.
-#
-# THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY EXPRESSED
-# OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
-#
-# Permission is hereby granted to use or copy this program
-# for any purpose, provided the above notices are retained on all copies.
-# Permission to modify the code and to distribute modified code is granted,
-# provided the above notices are retained, and a notice that the code was
-# modified is included with the above copyright notice.
-#
-# Original author: Tom Tromey
-
dnl Process this file with autoconf to produce configure.
-AC_INIT(gc_mark.h)
+AC_INIT(gcj_mlc.c)
dnl Can't be done in BOEHM_CONFIGURE because that confuses automake.
AC_CONFIG_AUX_DIR(..)
@@ -25,8 +12,6 @@
AM_PROG_LIBTOOL
dnl We use these options to decide which functions to include.
-
-
AC_ARG_WITH(target-subdir,
[ --with-target-subdir=SUBDIR
configuring with a cross compiler])
@@ -41,46 +26,11 @@
AC_EXEEXT
fi
-AC_MSG_CHECKING([for threads package to use])
-AC_ARG_ENABLE(threads, [ --enable-threads=TYPE choose threading package],
- THREADS=$enableval,
- dnl FIXME: figure out native threads to use here.
- THREADS=no)
-
-if test "$THREADS" = yes; then
- case "$host" in
- *-*-vxworks*)
- THREADS=vxworks
- ;;
- *-*-linux*)
- # FIXME: this isn't correct in all cases.
- THREADS=posix
- ;;
- *-*-win*)
- THREADS=win32
- ;;
- *-*-irix[[1-5]].*)
- # No built-in threads library on IRIX 5.* and older.
- THREADS=none
- ;;
- *-*-irix*)
- # FIXME: for now, choose POSIX, because we implement that.
- # Later, choose irix threads.
- THREADS=posix
- ;;
- *-*-solaris*)
- # FIXME: for now, choose POSIX, because we implement that.
- # Later, choose solaris threads.
- THREADS=posix
- ;;
- *)
- # For now.
- THREADS=none
- ;;
- esac
-fi
+AC_MSG_CHECKING([for thread model used by GCC])
+THREADS=`$CC -v 2>&1 | sed -n 's/^Thread model: //p'`
+AC_MSG_RESULT([$THREADS])
-INCLUDES=
+INCLUDES=-I${srcdir}/include
THREADLIBS=
case "$THREADS" in
no | none | single)
@@ -88,11 +38,18 @@
;;
posix | pthreads)
THREADS=posix
+ THREADLIBS=-lpthread
case "$host" in
*-*-linux*)
AC_DEFINE(LINUX_THREADS)
AC_DEFINE(_REENTRANT)
;;
+ *-*-freebsd*)
+ AC_MSG_WARN("FreeBSD does not yet fully support threads with Boehm GC.")
+ AC_DEFINE(FREEBSD_THREADS)
+ INCLUDES="$INCLUDES -pthread"
+ THREADLIBS=-pthread
+ ;;
*-*-solaris*)
AC_DEFINE(SOLARIS_THREADS)
AC_DEFINE(_SOLARIS_PTHREADS)
@@ -101,7 +58,6 @@
AC_DEFINE(IRIX_THREADS)
;;
esac
- THREADLIBS=-lpthread
;;
decosf1 | irix | mach | os2 | solaris | win32 | dce | vxworks)
AC_MSG_ERROR(thread package $THREADS not yet supported)
@@ -110,7 +66,6 @@
AC_MSG_ERROR($THREADS is an unknown thread package)
;;
esac
-AC_MSG_RESULT($THREADS)
AC_SUBST(THREADLIBS)
AC_CHECK_LIB(dl, dlopen, EXTRA_TEST_LIBS="$EXTRA_TEST_LIBS -ldl")
Index: dbg_mlc.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/dbg_mlc.c,v
retrieving revision 1.1.1.6
retrieving revision 1.7
diff -u -r1.1.1.6 -r1.7
--- dbg_mlc.c 2001/05/21 06:39:24 1.1.1.6
+++ dbg_mlc.c 2001/05/21 08:35:13 1.7
@@ -423,6 +423,35 @@
return (GC_store_debug_info(result, (word)lb, s, (word)i));
}
+# ifdef __STDC__
+ GC_PTR GC_debug_generic_malloc(size_t lb, int k, GC_EXTRA_PARAMS)
+# else
+ GC_PTR GC_debug_malloc(lb, k, s, i)
+ size_t lb;
+ int k;
+ char * s;
+ int i;
+# ifdef GC_ADD_CALLER
+ --> GC_ADD_CALLER not implemented for K&R C
+# endif
+# endif
+{
+ GC_PTR result = GC_generic_malloc(lb + DEBUG_BYTES, k);
+
+ if (result == 0) {
+ GC_err_printf1("GC_debug_malloc(%ld) returning NIL (",
+ (unsigned long) lb);
+ GC_err_puts(s);
+ GC_err_printf1(":%ld)\n", (unsigned long)i);
+ return(0);
+ }
+ if (!GC_debugging_started) {
+ GC_start_debugging();
+ }
+ ADD_CALL_CHAIN(result, ra);
+ return (GC_store_debug_info(result, (word)lb, s, (word)i));
+}
+
# ifdef DBG_HDRS_ALL
/*
* An allocation function for internal use.
Index: dyn_load.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/dyn_load.c,v
retrieving revision 1.1.1.6
retrieving revision 1.10
diff -u -r1.1.1.6 -r1.10
--- dyn_load.c 2001/05/21 06:39:24 1.1.1.6
+++ dyn_load.c 2001/05/21 08:35:13 1.10
@@ -519,7 +519,6 @@
/* The type is a lie, since the real type doesn't make sense here, */
/* and we only test for NULL. */
-
/* We use /proc to track down all parts of the address space that are */
/* mapped by the process, and throw out regions we know we shouldn't */
/* worry about. This may also work under other SVR4 variants. */
Index: gcj_mlc.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/gcj_mlc.c,v
retrieving revision 1.1.1.3
retrieving revision 1.4
diff -u -r1.1.1.3 -r1.4
--- gcj_mlc.c 2001/05/21 06:39:24 1.1.1.3
+++ gcj_mlc.c 2001/05/21 08:35:13 1.4
@@ -17,13 +17,13 @@
#ifdef GC_GCJ_SUPPORT
/*
- * This is an allocator interface tuned for gcj (the GNU/Cygnus static
+ * This is an allocator interface tuned for gcj (the GNU static
* java compiler).
*
* Each allocated object has a pointer in its first word to a vtable,
* which for our purposes is simply a structure describing the type of
* the object.
- * This descriptor structur contains a GC marking descriptor at offset
+ * This descriptor structure contains a GC marking descriptor at offset
* MARK_DESCR_OFFSET.
*
* It is hoped that this interface may also be useful for other systems,
@@ -37,7 +37,7 @@
*/
#include "private/gc_priv.h"
-#include "private/gc_mark.h"
+#include "private/gc_pmark.h"
#include "gc_gcj.h"
#include "private/dbg_mlc.h"
@@ -52,7 +52,7 @@
ptr_t * GC_gcjdebugobjfreelist;
/* Caller does not hold allocation lock. */
-void GC_init_gcj_malloc(int mp_index, void * /* really mark_proc */mp)
+void GC_init_gcj_malloc(int mp_index, void * /* really GC_mark_proc */mp)
{
register int i;
DCL_LOCK_STATE;
@@ -66,7 +66,7 @@
return;
}
GC_gcj_malloc_initialized = TRUE;
- GC_mark_procs[mp_index] = (mark_proc)mp;
+ GC_mark_procs[mp_index] = (GC_mark_proc)mp;
if (mp_index >= GC_n_mark_procs) ABORT("GC_init_gcj_malloc: bad index");
/* Set up object kind gcj-style indirect descriptor. */
GC_gcjobjfreelist = (ptr_t *)
@@ -77,7 +77,7 @@
GC_obj_kinds[GC_gcj_kind].ok_freelist = GC_gcjobjfreelist;
GC_obj_kinds[GC_gcj_kind].ok_reclaim_list = 0;
GC_obj_kinds[GC_gcj_kind].ok_descriptor =
- (((word)(-MARK_DESCR_OFFSET - INDIR_PER_OBJ_BIAS)) | DS_PER_OBJECT);
+ (((word)(-MARK_DESCR_OFFSET - GC_INDIR_PER_OBJ_BIAS)) | GC_DS_PER_OBJECT);
GC_obj_kinds[GC_gcj_kind].ok_relocate_descr = FALSE;
GC_obj_kinds[GC_gcj_kind].ok_init = TRUE;
/* Set up object kind for objects that require mark proc call. */
@@ -90,7 +90,7 @@
GC_obj_kinds[GC_gcj_debug_kind].ok_freelist = GC_gcjdebugobjfreelist;
GC_obj_kinds[GC_gcj_debug_kind].ok_reclaim_list = 0;
GC_obj_kinds[GC_gcj_debug_kind].ok_descriptor =
- MAKE_PROC(mp_index, 1 /* allocated with debug info */);
+ GC_MAKE_PROC(mp_index, 1 /* allocated with debug info */);
GC_obj_kinds[GC_gcj_debug_kind].ok_relocate_descr = FALSE;
GC_obj_kinds[GC_gcj_debug_kind].ok_init = TRUE;
UNLOCK();
Index: linux_threads.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/linux_threads.c,v
retrieving revision 1.1.1.6
retrieving revision 1.11
diff -u -r1.1.1.6 -r1.11
--- linux_threads.c 2001/05/21 06:39:24 1.1.1.6
+++ linux_threads.c 2001/05/21 08:35:13 1.11
@@ -736,6 +736,11 @@
return(p);
}
+/* There seems to be a very rare thread stopping problem. To help us */
+/* debug that, we save the ids of the stopping thread. */
+pthread_t GC_stopping_thread;
+int GC_stopping_pid;
+
/* Caller holds allocation lock. */
void GC_stop_world()
{
@@ -745,6 +750,9 @@
register int n_live_threads = 0;
register int result;
+ GC_stopping_thread = my_thread; /* debugging only. */
+ GC_stopping_pid = getpid(); /* debugging only. */
+
/* Make sure all free list construction has stopped before we start. */
/* No new construction can start, since free list construction is */
/* required to acquire and release the GC lock before it starts, */
@@ -829,6 +837,7 @@
#if DEBUG_THREADS
GC_printf0("World started\n");
#endif
+ GC_stopping_thread = 0; /* debugging only */
}
# ifdef IA64
Index: mips_sgi_mach_dep.s
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/mips_sgi_mach_dep.s,v
retrieving revision 1.1.1.1
retrieving revision 1.3
diff -u -r1.1.1.1 -r1.3
--- mips_sgi_mach_dep.s 1999/04/07 14:56:06 1.1.1.1
+++ mips_sgi_mach_dep.s 1999/07/31 23:50:05 1.3
@@ -3,6 +3,7 @@
# define call_push(x) move $4,x; jal GC_push_one
+ .option pic2
.text
/* Mark from machine registers that are saved by C compiler */
# define FRAMESZ 32
Index: misc.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/misc.c,v
retrieving revision 1.1.1.5
retrieving revision 1.15
diff -u -r1.1.1.5 -r1.15
--- misc.c 2001/05/21 06:39:24 1.1.1.5
+++ misc.c 2001/05/21 08:35:13 1.15
@@ -71,6 +71,10 @@
# endif
# endif
+#ifdef ECOS
+#undef STACKBASE
+#endif
+
GC_FAR struct _GC_arrays GC_arrays /* = { 0 } */;
@@ -750,6 +754,15 @@
return(bytes_written);
}
#endif /* UN*X */
+
+#if defined(ECOS)
+int GC_write(fd, buf, len)
+{
+ _Jv_diag_write (buf, len);
+ return len;
+}
+#endif
+
#if defined(MSWIN32) || defined(MSWINCE)
# define WRITE(f, buf, len) GC_write(buf, len)
Index: os_dep.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/os_dep.c,v
retrieving revision 1.1.1.7
retrieving revision 1.16
diff -u -r1.1.1.7 -r1.16
--- os_dep.c 2001/05/21 06:39:24 1.1.1.7
+++ os_dep.c 2001/05/21 08:35:13 1.16
@@ -185,6 +185,39 @@
}
#endif
+# ifdef ECOS
+
+# ifndef ECOS_GC_MEMORY_SIZE
+# define ECOS_GC_MEMORY_SIZE (448 * 1024)
+# endif /* ECOS_GC_MEMORY_SIZE */
+
+// setjmp() function, as described in ANSI para 7.6.1.1
+#define setjmp( __env__ ) hal_setjmp( __env__ )
+
+// FIXME: This is a simple way of allocating memory which is
+// compatible with ECOS early releases. Later releases use a more
+// sophisticated means of allocating memory than this simple static
+// allocator, but this method is at least bound to work.
+static char memory[ECOS_GC_MEMORY_SIZE];
+static char *brk = memory;
+
+static void *tiny_sbrk(ptrdiff_t increment)
+{
+ void *p = brk;
+
+ brk += increment;
+
+ if (brk > memory + sizeof memory)
+ {
+ brk -= increment;
+ return NULL;
+ }
+
+ return p;
+}
+#define sbrk tiny_sbrk
+# endif /* ECOS */
+
#if defined(NETBSD) && defined(__ELF__)
ptr_t GC_data_start;
@@ -378,7 +411,7 @@
# endif /*!OS/2 */
/* Ivan Demakov: simplest way (to me) */
-#ifdef DOS4GW
+#if defined (DOS4GW)
void GC_disable_signals() { }
void GC_enable_signals() { }
#endif
@@ -510,6 +543,7 @@
handler h;
# endif
{
+# ifndef ECOS
# if defined(SUNOS5SIGS) || defined(IRIX5) || defined(OSF1)
struct sigaction act;
@@ -543,6 +577,7 @@
old_bus_handler = signal(SIGBUS, h);
# endif
# endif
+# endif /* ECOS */
}
# endif /* NEED_FIND_LIMIT || UNIX_LIKE */
@@ -565,6 +600,7 @@
void GC_reset_fault_handler()
{
+# ifndef ECOS
# if defined(SUNOS5SIGS) || defined(IRIX5) || defined(OSF1)
(void) sigaction(SIGSEGV, &old_segv_act, 0);
# if defined(IRIX5) && defined(_sigargs) /* Irix 5.x, not 6.x */ \
@@ -577,6 +613,7 @@
(void) signal(SIGBUS, old_bus_handler);
# endif
# endif
+# endif /* ECOS */
}
/* Return the first nonaddressible location > p (up) or */
@@ -585,6 +622,7 @@
ptr_t p;
GC_bool up;
{
+# ifndef ECOS
static VOLATILE ptr_t result;
/* Needs to be static, since otherwise it may not be */
/* preserved across the longjmp. Can safely be */
@@ -610,9 +648,14 @@
result += MIN_PAGE_SIZE;
}
return(result);
+# else /* ECOS */
+ abort();
+# endif /* ECOS */
}
# endif
+# ifndef ECOS
+
#ifdef LINUX_STACKBOTTOM
#include <sys/types.h>
@@ -764,6 +807,7 @@
return(result);
# endif /* STACKBOTTOM */
}
+# endif /* ECOS */
# endif /* ! AMIGA, !OS 2, ! MS Windows, !BEOS */
Index: solaris_pthreads.c
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/solaris_pthreads.c,v
retrieving revision 1.1.1.4
retrieving revision 1.5
diff -u -r1.1.1.4 -r1.5
--- solaris_pthreads.c 2001/05/21 06:39:24 1.1.1.4
+++ solaris_pthreads.c 2001/05/21 08:35:13 1.5
@@ -16,7 +16,6 @@
* Modified Peter C. for Solaris Posix Threads.
*/
/* Boehm, September 14, 1994 4:44 pm PDT */
-/* $Id: solaris_pthreads.c,v 1.1.1.4 2001/05/21 06:39:24 bryce Exp $ */
# if defined(GC_SOLARIS_PTHREADS) || defined(_SOLARIS_PTHREADS)
# include "private/gc_priv.h"
Index: include/private/gc_pmark.h
===================================================================
RCS file: /cvs/gcc/gcc/boehm-gc/include/private/gc_pmark.h,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -r1.1.1.1 -r1.2
--- gc_pmark.h 2001/05/21 06:39:25 1.1.1.1
+++ gc_pmark.h 2001/05/21 08:35:14 1.2
@@ -132,9 +132,14 @@
*/
#endif /* PARALLEL_MARK */
-ptr_t GC_find_start();
+# ifdef PRINT_BLACK_LIST
+ ptr_t GC_find_start(ptr_t current, hdr *hhdr, word source);
+# else
+ ptr_t GC_find_start(ptr_t current, hdr *hhdr);
+# define source 0
+# endif
-mse * GC_signal_mark_stack_overflow();
+mse *GC_signal_mark_stack_overflow(mse *msp);
# ifdef GATHERSTATS
# define ADD_TO_ATOMIC(sz) GC_atomic_in_use += (sz)
@@ -245,7 +250,6 @@
# define SET_MARK_BIT_EXIT_IF_SET(hhdr,displ,exit_label) \
{ \
register word * mark_word_addr = hhdr -> hb_marks + divWORDSZ(displ); \
- register word mark_word = *mark_word_addr; \
\
OR_WORD_EXIT_IF_SET(mark_word_addr, (word)1 << modWORDSZ(displ), \
exit_label); \