[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dotgnu-pnet-commits] pnet ChangeLog libgc/ChangeLog libgc/alloc.c li...
From: |
Klaus Treichel |
Subject: |
[dotgnu-pnet-commits] pnet ChangeLog libgc/ChangeLog libgc/alloc.c li... |
Date: |
Wed, 22 Oct 2008 19:20:31 +0000 |
CVSROOT: /cvsroot/dotgnu-pnet
Module name: pnet
Changes by: Klaus Treichel <ktreichel> 08/10/22 19:20:31
Modified files:
. : ChangeLog
libgc : ChangeLog alloc.c configure.ac
darwin_stop_world.c dbg_mlc.c dyn_load.c
finalize.c gcj_mlc.c mach_dep.c mallocx.c
mark_rts.c misc.c mkinstalldirs os_dep.c
pthread_stop_world.c pthread_support.c
ptr_chck.c reclaim.c thread_local_alloc.c
typd_mlc.c win32_threads.c
libgc/cord : cord.am
libgc/doc : README README.DGUX386 README.autoconf
debugging.html gcinterface.html leak.html
simple_example.html
libgc/include : gc.h gc_allocator.h gc_config_macros.h
gc_mark.h gc_typed.h javaxfc.h new_gc_alloc.h
libgc/include/private: dbg_mlc.h gc_locks.h gc_pmark.h gc_priv.h
gcconfig.h
libgc/libatomic_ops-1.2: ChangeLog
libgc/libatomic_ops-1.2/src: atomic_ops.c atomic_ops.h
atomic_ops_stack.c
atomic_ops_stack.h
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps:
aligned_atomic_load_store.h
all_aligned_atomic_load_store.h
all_atomic_load_store.h
atomic_load_store.h
char_atomic_load_store.h
int_aligned_atomic_load_store.h
int_atomic_load_store.h
short_aligned_atomic_load_store.h
short_atomic_load_store.h
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc: arm.h x86.h
x86_64.h
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc: hppa.h
ia64.h
Log message:
Include the latest libgc changes.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pnet/ChangeLog?cvsroot=dotgnu-pnet&r1=1.3576&r2=1.3577
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/alloc.c?cvsroot=dotgnu-pnet&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/configure.ac?cvsroot=dotgnu-pnet&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/darwin_stop_world.c?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/dbg_mlc.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/dyn_load.c?cvsroot=dotgnu-pnet&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/finalize.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/gcj_mlc.c?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/mach_dep.c?cvsroot=dotgnu-pnet&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/mallocx.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/mark_rts.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/misc.c?cvsroot=dotgnu-pnet&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/mkinstalldirs?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/os_dep.c?cvsroot=dotgnu-pnet&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/pthread_stop_world.c?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/pthread_support.c?cvsroot=dotgnu-pnet&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/ptr_chck.c?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/reclaim.c?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/thread_local_alloc.c?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/typd_mlc.c?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/win32_threads.c?cvsroot=dotgnu-pnet&r1=1.18&r2=1.19
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/cord/cord.am?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/README?cvsroot=dotgnu-pnet&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/README.DGUX386?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/README.autoconf?cvsroot=dotgnu-pnet&r1=1.1.1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/debugging.html?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/gcinterface.html?cvsroot=dotgnu-pnet&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/leak.html?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/doc/simple_example.html?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/gc.h?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/gc_allocator.h?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/gc_config_macros.h?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/gc_mark.h?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/gc_typed.h?cvsroot=dotgnu-pnet&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/javaxfc.h?cvsroot=dotgnu-pnet&r1=1.3&r2=1.4
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/new_gc_alloc.h?cvsroot=dotgnu-pnet&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/private/dbg_mlc.h?cvsroot=dotgnu-pnet&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/private/gc_locks.h?cvsroot=dotgnu-pnet&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/private/gc_pmark.h?cvsroot=dotgnu-pnet&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/private/gc_priv.h?cvsroot=dotgnu-pnet&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/include/private/gcconfig.h?cvsroot=dotgnu-pnet&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/ChangeLog?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops.c?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops_stack.c?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops_stack.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h?cvsroot=dotgnu-pnet&r1=1.2&r2=1.3
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2
Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/ChangeLog,v
retrieving revision 1.3576
retrieving revision 1.3577
diff -u -b -r1.3576 -r1.3577
--- ChangeLog 19 Oct 2008 16:45:17 -0000 1.3576
+++ ChangeLog 22 Oct 2008 19:19:59 -0000 1.3577
@@ -1,3 +1,42 @@
+2008-10-22 Klaus Treichel <address@hidden>
+
+ * libgc/ChangeLog, libgc/alloc.c, libgc/configure.ac,
+ libgc/darwin_stop_world.c, libgc/dbg_mlc.c, libgc/dyn_load.c,
+ libgc/finalize.c, libgc/gcj_mlc.c, libgc/mach_dep.c, libgc/mallocx.c,
+ libgc/mark_rts.c, libgc/misc.c, libgc/mkinstalldirs, libgc/os_dep.c,
+ libgc/pthread_stop_world.c, libgc/pthread_support.c, libgc/ptr_chck.c,
+ libgc/reclaim.c, libgc/thread_local_alloc.c, libgc/typd_mlc.c,
+ libgc/win32_threads.c, libgc/cord/cord.am, libgc/doc/README,
+ libgc/doc/README.DGUX386, libgc/doc/README.autoconf,
+ libgc/doc/debugging.html, libgc/doc/gcinterface.html,
+ libgc/doc/leak.html, libgc/doc/simple_example.html,
+ libgc/include/gc.h, libgc/include/gc_allocator.h,
+ libgc/include/gc_config_macros.h, libgc/include/gc_mark.h,
+ libgc/include/gc_typed.h, libgc/include/javaxfc.h,
+ libgc/include/new_gc_alloc.h, libgc/include/private/dbg_mlc.h,
+ libgc/include/private/gc_locks.h,, libgc/include/private/gc_pmark.h,
+ libgc/include/private/gc_priv.h, libgc/include/private/gcconfig.h,
+ libgc/libatomic_ops-1.2/ChangeLog,
+ libgc/libatomic_ops-1.2/src/atomic_ops.c,
+ libgc/libatomic_ops-1.2/src/atomic_ops.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops_stack.c,
+ libgc/libatomic_ops-1.2/src/atomic_ops_stack.h,
+
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h,
+
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h,
+
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h,
+
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,
+
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h,
+ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h: Include the
+ latest libgc changes.
+
2008-10-19 Klaus Treichel <address@hidden>
* codegen/cg_lvalue.tc (ILQualIdentGetName): Add function to get the
name
Index: libgc/ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/ChangeLog,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/ChangeLog 30 Aug 2008 13:57:42 -0000 1.2
+++ libgc/ChangeLog 22 Oct 2008 19:19:59 -0000 1.3
@@ -1,3 +1,82 @@
+2008-10-21 Hans Boehm <address@hidden> (Really Ivan Maidanski)
+ * include/private/gc_locks.h, include/private/gc_pmark.h,
+ include/private/gc_priv.h, include/private/gcconfig.h,
+ mach_dep.c, mark_rts.c, misc.c, os_dep.c, pthread_stop_world.c,
+ pthread_support.c, thread_local_alloc.c, typd_mlc.c, win32_threads.c:
+ Fix comments.
+
+2008-10-21 Hans Boehm <address@hidden> (Really Ivan Maidanski)
+ * pthread_support.c: Comment out LOCK_STATS.
+ * include/gc.h: Fix comments.
+
+2008-10-20 Hans Boehm <address@hidden> (Really Ivan Maidanski)
+ * misc.c (GC_init_inner): Enable GC_LOG_FILE on Cygwin.
+ * include/private/gcconfig.h: Consider USE_MMAP for Cygwin.
+ * os_dep.c (GC_get_main_stack_base): Use alternate definition
+ with USE_MMAP.
+ * include/private/gc_priv.h: Sometimes define SETJMP on Cygwin.
+
+2008-10-20 Hans Boehm <address@hidden>
+ * doc/README: Make it clearer when Makefile.direct is assumed.
+ * cord/cord.am: install include/cord.h.
+ * Makefile.in: Regenerate.
+
+2008-09-24 Hans Boehm <address@hidden> (Really Ivan Maidanski)
+ * win32_threads.c (GC_pthread_join, GC_pthread_start_inner):
+ Remove unused variables.
+ * darwin_stop_world.c: Always declare GC_thr_init().
+ * dbg_mlc.c (GC_debug_free_inner): Dont touch oh_sz if
+ SHORT_DBG_HDRS is defined.
+ * include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET, parallel
+ mark, USE_MARK_BITS version): Refer to correct parameter name.
+
+2008-09-24 Hans Boehm <address@hidden> (Really Ivan Maidanski)
+ * finalize.c (GC_general_register_disappearing_link): Remove
+ redundant code.
+ * gcj_mlc.c (GC_init_gcj_malloc): Add cast to signed.
+ * os_dep.c: (GC_write_fault_handler): Remove remaining
+ references to deleted variable "code". Remove redundant
+ FREEBSD definitions.
+ * include/private/gcconfig.h (GWW_VDB): Define for X86_64 when
+ defined for X86. (STATIC): Define as "static" with NO_DEBUGGING.
+
+2008-09-24 Hans Boehm <address@hidden>
+ * include/private/gc_priv.h: Update MAX_HEAP_SECTS.
+
+2008-09-10 Hans Boehm <address@hidden>
+ * dbg_mlc.c (GC_print_smashed_obj): Increase robustness with
+ smashed string, (GC_debug_free_inner): Mark as free.
+ * mallocx.c (GC_malloc_many): Always clear new block if
+ GC_debugging_started.
+ * reclaim.c: Move GC_debugging_started from
+ GC_reclaim_small_nonempty_block() to GC_reclaim_generic(),
+ which is also called directly.
+ * doc/README: Fix spelling error. Update license summary.
+ * include/gc.h (GC_PRE_INCR3, GC_POST_INCR3): add (void **) casts.
+ * tests/test.c: Don't define GC_DEBUG if already defined.
+
+2008-08-27 Hans Boehm <address@hidden>
+ * doc/simple_example.html: update --enable-full-debug reference,
+ Make HTML formatting standards compliant.
+ * doc/debugging.html, doc/leak.html: Fix HTML formatting bugs.
+ * doc/gcinterface.html: specify encoding.
+
+2008-08-27 Hans Boehm <address@hidden> (with help from Marco Maggi)
+ * doc/simple_example.html: Update thread-local allocation
+ description.
+
+2008-08-26 Hans Boehm <address@hidden> (with help from Marco Maggi)
+ * configure.ac: Check for gc-debug earlier; replace remaining
+ full-debug tests.
+ * configure: Regenerate.
+ * include/gc.h, ptr_chck.c (GC_pre_incr, GC_post_incr):
+ Use signed offset type. Use ptr_t internally.
+ * doc/gcinterface.html: Update LOCAL_MALLOC description.
+ * doc/README.autoconf, doc/leak.html, doc/README.DGUX386:
+ Fix full-debug reference.
+ * include/gc.h: Rewrite GC_..._INCR and friends.
+ * tests/test.c: Minimally test GC_..._INCR and friends.
+
2008-08-21 Hans Boehm <address@hidden>
* mark.c: (GC_push_next_marked, GC_push_next_marked_dirty,
GC_push_next_marked_uncollectable): Never invoke GC_push_marked
Index: libgc/alloc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/alloc.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- libgc/alloc.c 30 Aug 2008 13:57:42 -0000 1.8
+++ libgc/alloc.c 22 Oct 2008 19:19:59 -0000 1.9
@@ -216,7 +216,7 @@
/* Clear up a few frames worth of garbage left at the top of the stack.
*/
-/* This is used to prevent us from accidentally treating garbade left */
+/* This is used to prevent us from accidentally treating garbage left */
/* on the stack by other parts of the collector as roots. This */
/* differs from the code in misc.c, which actually tries to keep the */
/* stack clear of long-lived, client-generated garbage.
*/
Index: libgc/configure.ac
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/configure.ac,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- libgc/configure.ac 30 Aug 2008 13:57:42 -0000 1.3
+++ libgc/configure.ac 22 Oct 2008 19:20:00 -0000 1.4
@@ -22,7 +22,7 @@
AC_CONFIG_SRCDIR(gcj_mlc.c)
AC_CANONICAL_TARGET
AC_PREREQ(2.53)
-AC_REVISION($Revision: 1.3 $)
+AC_REVISION($Revision: 1.4 $)
GC_SET_VERSION
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects nostdinc])
AM_MAINTAINER_MODE
@@ -432,6 +432,7 @@
#
# Check for AViiON Machines running DGUX
+# FIXME: Should this be moved down to below the gc-debug processing?
#
ac_is_dgux=no
AC_CHECK_HEADER(sys/dg_sys_info.h,
@@ -439,7 +440,7 @@
## :GOTCHA: we do not check anything but sys/dg_sys_info.h
if test $ac_is_dgux = yes; then
- if test "$enable_full_debug" = "yes"; then
+ if test "$enable_gc_debug" = "yes"; then
CFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
CXXFLAGS="-g -mstandard -DDGUX -D_DGUX_SOURCE -Di386 -mno-legend -O2"
else
@@ -514,6 +515,38 @@
AC_DEFINE(GC_GCJ_SUPPORT, 1, [Define to include support for gcj])
fi
+dnl Debugging
+dnl ---------
+
+UNWINDLIBS=
+AC_ARG_ENABLE(gc-debug,
+[AC_HELP_STRING([--enable-gc-debug],
+ [include full support for pointer backtracing etc.])],
+[ if test "$enable_gc_debug" = "yes"; then
+ AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
+ AC_DEFINE(KEEP_BACK_PTRS)
+ AC_DEFINE(DBG_HDRS_ALL)
+ case $host in
+ ia64-*-linux* )
+ AC_DEFINE(MAKE_BACK_GRAPH)
+ AC_DEFINE(SAVE_CALL_COUNT, 8)
+ AC_CHECK_LIB(unwind, backtrace, [
+ AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE)
+ UNWINDLIBS=-lunwind
+ AC_MSG_WARN("Client code may need to link against libunwind.")
+ ])
+ ;;
+ x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
+ AC_DEFINE(MAKE_BACK_GRAPH)
+ AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
+ AC_DEFINE(SAVE_CALL_COUNT, 8)
+ ;;
+ i[3456]86-*-dgux*)
+ AC_DEFINE(MAKE_BACK_GRAPH)
+ ;;
+ esac ]
+ fi)
+
AC_ARG_ENABLE(java-finalization,
[AC_HELP_STRING([--disable-java-finalization],
[Disable support for java finalization.])])
@@ -534,7 +567,7 @@
[Redirect malloc and friends to GC routines])])
if test "${enable_redirect_malloc}" = yes; then
- if test "${enable_full_debug}" = yes; then
+ if test "${enable_gc_debug}" = yes; then
AC_DEFINE(REDIRECT_MALLOC, GC_debug_malloc_replacement)
AC_DEFINE(REDIRECT_REALLOC, GC_debug_realloc_replacement)
AC_DEFINE(REDIRECT_FREE, GC_debug_free)
@@ -562,38 +595,6 @@
fi
-dnl Debugging
-dnl ---------
-
-UNWINDLIBS=
-AC_ARG_ENABLE(gc-debug,
-[AC_HELP_STRING([--enable-gc-debug],
- [include full support for pointer backtracing etc.])],
-[ if test "$enable_gc_debug" = "yes"; then
- AC_MSG_WARN("Should define GC_DEBUG and use debug alloc. in clients.")
- AC_DEFINE(KEEP_BACK_PTRS)
- AC_DEFINE(DBG_HDRS_ALL)
- case $host in
- ia64-*-linux* )
- AC_DEFINE(MAKE_BACK_GRAPH)
- AC_DEFINE(SAVE_CALL_COUNT, 8)
- AC_CHECK_LIB(unwind, backtrace, [
- AC_DEFINE(GC_HAVE_BUILTIN_BACKTRACE)
- UNWINDLIBS=-lunwind
- AC_MSG_WARN("Client code may need to link against libunwind.")
- ])
- ;;
- x86-*-linux* | i586-*-linux* | i686-*-linux* | x86_64-*-linux* )
- AC_DEFINE(MAKE_BACK_GRAPH)
- AC_MSG_WARN("Client must not use -fomit-frame-pointer.")
- AC_DEFINE(SAVE_CALL_COUNT, 8)
- ;;
- i[3456]86-*-dgux*)
- AC_DEFINE(MAKE_BACK_GRAPH)
- ;;
- esac ]
- fi)
-
AC_SUBST(UNWINDLIBS)
AC_ARG_ENABLE(gc-assertions,
Index: libgc/darwin_stop_world.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/darwin_stop_world.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- libgc/darwin_stop_world.c 30 Aug 2008 13:57:42 -0000 1.6
+++ libgc/darwin_stop_world.c 22 Oct 2008 19:20:00 -0000 1.7
@@ -72,9 +72,10 @@
return (unsigned long)frame;
}
-#ifdef DARWIN_DONT_PARSE_STACK
void GC_thr_init(void);
+#ifdef DARWIN_DONT_PARSE_STACK
+
void GC_push_all_stacks(void)
{
int i;
Index: libgc/dbg_mlc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/dbg_mlc.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/dbg_mlc.c 30 Aug 2008 13:57:42 -0000 1.7
+++ libgc/dbg_mlc.c 22 Oct 2008 19:20:00 -0000 1.8
@@ -420,7 +420,9 @@
GC_err_printf("<smashed>, appr. sz = %ld)\n",
(GC_size((ptr_t)ohdr) - DEBUG_BYTES));
} else {
- if (ohdr -> oh_string[0] == '\0') {
+ if ((word)(ohdr -> oh_string) < HBLKSIZE) {
+ GC_err_puts("(smashed string)");
+ } else if (ohdr -> oh_string[0] == '\0') {
GC_err_puts("EMPTY(smashed?)");
} else {
GC_err_puts(ohdr -> oh_string);
@@ -758,7 +760,13 @@
/* Used internally; we assume it's called correctly. */
void GC_debug_free_inner(void * p)
{
- GC_free_inner(GC_base(p));
+ ptr_t base = GC_base(p);
+ GC_ASSERT((ptr_t)p - (ptr_t)base == sizeof(oh));
+# ifndef SHORT_DBG_HDRS
+ /* Invalidate size */
+ ((oh *)base) -> oh_sz = GC_size(base);
+# endif
+ GC_free_inner(base);
}
#endif
Index: libgc/dyn_load.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/dyn_load.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- libgc/dyn_load.c 30 Aug 2008 13:57:42 -0000 1.11
+++ libgc/dyn_load.c 22 Oct 2008 19:20:00 -0000 1.12
@@ -237,7 +237,7 @@
/* Sort an array of HeapSects by start address.
*/
/* Unfortunately at least some versions of */
/* Linux qsort end up calling malloc by way of sysconf, and hence can't */
-/* be used in the colector. Hence we roll our own. Should be */
+/* be used in the collector. Hence we roll our own. Should be
*/
/* reasonably fast if the array is already mostly sorted, as we expect */
/* it to be. */
static void sort_heap_sects(struct HeapSect *base, size_t number_of_elements)
@@ -1177,7 +1177,7 @@
PCR_IL_LoadedFile * p = PCR_IL_GetLastLoadedFile();
PCR_IL_LoadedSegment * q;
- /* Skip uncommited files */
+ /* Skip uncommitted files */
while (p != NIL && !(p -> lf_commitPoint)) {
/* The loading of this file has not yet been committed */
/* Hence its description could be inconsistent.
*/
Index: libgc/finalize.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/finalize.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/finalize.c 30 Aug 2008 13:57:42 -0000 1.7
+++ libgc/finalize.c 22 Oct 2008 19:20:00 -0000 1.8
@@ -81,7 +81,7 @@
} **fo_head = 0;
STATIC struct finalizable_object * GC_finalize_now = 0;
- /* LIst of objects that should be finalized now. */
+ /* List of objects that should be finalized now. */
static signed_word log_fo_table_size = -1;
@@ -96,7 +96,7 @@
}
/* Double the size of a hash table. *size_ptr is the log of its current
*/
-/* size. May be a noop. */
+/* size. May be a no-op. */
/* *table is a pointer to an array of hash headers. If we succeed, we */
/* update both *table and *log_size_ptr. */
/* Lock is held. Signals are disabled.
*/
@@ -169,7 +169,6 @@
}
}
index = HASH2(link, log_dl_table_size);
- curr_dl = dl_head[index];
for (curr_dl = dl_head[index]; curr_dl != 0; curr_dl = dl_next(curr_dl)) {
if (curr_dl -> dl_hidden_link == HIDE_POINTER(link)) {
curr_dl -> dl_hidden_obj = HIDE_POINTER(obj);
@@ -487,8 +486,8 @@
}
#endif
-/* Called with world stopped. Cause disappearing links to disappear, */
-/* and invoke finalizers. */
+/* Called with held lock (but the world is running). */
+/* Cause disappearing links to disappear, and invoke finalizers. */
void GC_finalize(void)
{
struct disappearing_link * curr_dl, * prev_dl, * next_dl;
Index: libgc/gcj_mlc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/gcj_mlc.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libgc/gcj_mlc.c 30 Aug 2008 13:57:42 -0000 1.5
+++ libgc/gcj_mlc.c 22 Oct 2008 19:20:00 -0000 1.6
@@ -81,7 +81,8 @@
} else {
GC_gcj_kind = GC_new_kind_inner(
(void **)GC_gcjobjfreelist,
- (((word)(-MARK_DESCR_OFFSET - GC_INDIR_PER_OBJ_BIAS))
+ (((word)(-(signed_word)MARK_DESCR_OFFSET
+ - GC_INDIR_PER_OBJ_BIAS))
| GC_DS_PER_OBJECT),
FALSE, TRUE);
}
Index: libgc/mach_dep.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/mach_dep.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- libgc/mach_dep.c 30 Aug 2008 13:57:42 -0000 1.8
+++ libgc/mach_dep.c 22 Oct 2008 19:20:00 -0000 1.9
@@ -69,7 +69,7 @@
# endif
/* Routine to mark from registers that are preserved by the C compiler. */
-/* This must be ported to every new architecture. It is noe optional, */
+/* This must be ported to every new architecture. It is not optional, */
/* and should not be used on platforms that are either UNIX-like, or */
/* require thread support. */
Index: libgc/mallocx.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/mallocx.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/mallocx.c 30 Aug 2008 13:57:43 -0000 1.7
+++ libgc/mallocx.c 22 Oct 2008 19:20:00 -0000 1.8
@@ -393,7 +393,7 @@
GC_release_mark_lock();
# endif
- op = GC_build_fl(h, lw, ok -> ok_init, 0);
+ op = GC_build_fl(h, lw, (ok -> ok_init || GC_debugging_started), 0);
# ifdef PARALLEL_MARK
*result = op;
GC_acquire_mark_lock();
Index: libgc/mark_rts.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/mark_rts.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/mark_rts.c 30 Aug 2008 13:57:43 -0000 1.7
+++ libgc/mark_rts.c 22 Oct 2008 19:20:00 -0000 1.8
@@ -154,11 +154,11 @@
/* Add [b,e) to the root set. Adding the same interval a second time */
-/* is a moderately fast noop, and hence benign. We do not handle */
+/* is a moderately fast no-op, and hence benign. We do not handle */
/* different but overlapping intervals efficiently. (We do handle */
/* them correctly.) */
/* Tmp specifies that the interval may be deleted before */
-/* reregistering dynamic libraries. */
+/* re-registering dynamic libraries. */
void GC_add_roots_inner(ptr_t b, ptr_t e, GC_bool tmp)
{
struct roots * old;
@@ -562,7 +562,7 @@
* Next push static data. This must happen early on, since it's
* not robust against mark stack overflow.
*/
- /* Reregister dynamic libraries, in case one got added. */
+ /* Re-register dynamic libraries, in case one got added. */
/* There is some argument for doing this as late as possible, */
/* especially on win32, where it can change asynchronously. */
/* In those cases, we do it here. But on other platforms, it's */
Index: libgc/misc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/misc.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- libgc/misc.c 30 Aug 2008 13:57:43 -0000 1.10
+++ libgc/misc.c 22 Oct 2008 19:20:01 -0000 1.11
@@ -35,7 +35,7 @@
# include <tchar.h>
#endif
-#ifdef UNIX_LIKE
+#if defined(UNIX_LIKE) || defined(CYGWIN32)
# include <fcntl.h>
# include <sys/types.h>
# include <sys/stat.h>
@@ -134,7 +134,7 @@
/* but not too much bigger */
/* and so that size_map contains relatively few distinct entries */
/* This was originally stolen from Russ Atkinson's Cedar */
-/* quantization alogrithm (but we precompute it). */
+/* quantization algorithm (but we precompute it). */
STATIC void GC_init_size_map(void)
{
int i;
@@ -365,7 +365,7 @@
/* Return the size of an object, given a pointer to its base. */
-/* (For small obects this also happens to work from interior pointers, */
+/* (For small objects this also happens to work from interior pointers,
*/
/* but that shouldn't be relied upon.) */
GC_API size_t GC_size(void * p)
{
@@ -501,7 +501,7 @@
if (0 != GETENV("GC_PRINT_VERBOSE_STATS")) {
GC_print_stats = VERBOSE;
}
-# if defined(UNIX_LIKE)
+# if defined(UNIX_LIKE) || defined(CYGWIN32)
{
char * file_name = GETENV("GC_LOG_FILE");
if (0 != file_name) {
Index: libgc/mkinstalldirs
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/mkinstalldirs,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- libgc/mkinstalldirs 31 Jul 2008 19:39:04 -0000 1.6
+++ libgc/mkinstalldirs 22 Oct 2008 19:20:01 -0000 1.7
@@ -4,7 +4,7 @@
# Created: 1993-05-16
# Public domain
-# $Id: mkinstalldirs,v 1.6 2008/07/31 19:39:04 ktreichel Exp $
+# $Id: mkinstalldirs,v 1.7 2008/10/22 19:20:01 ktreichel Exp $
errstatus=0
dirmode=""
Index: libgc/os_dep.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/os_dep.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- libgc/os_dep.c 30 Aug 2008 13:57:43 -0000 1.13
+++ libgc/os_dep.c 22 Oct 2008 19:20:01 -0000 1.14
@@ -63,7 +63,7 @@
# include <signal.h>
# endif
-#ifdef UNIX_LIKE
+#if defined(UNIX_LIKE) || defined(CYGWIN32)
# include <fcntl.h>
#endif
@@ -166,7 +166,7 @@
#ifdef THREADS
/* Determine the length of a file by incrementally reading it into a */
-/* This would be sily to use on a file supporting lseek, but Linux */
+/* This would be silly to use on a file supporting lseek, but Linux */
/* /proc files usually do not. */
STATIC size_t GC_get_file_len(int f)
{
@@ -438,7 +438,7 @@
/* Some Linux distributions arrange to define __data_start. Some */
/* define data_start as a weak symbol. The latter is technically */
/* broken, since the user program may define data_start, in which */
- /* case we lose. Nonetheless, we try both, prefering __data_start.
*/
+ /* case we lose. Nonetheless, we try both, preferring __data_start.*/
/* We assume gcc-compatible pragmas. */
# pragma weak __data_start
extern int __data_start[];
@@ -626,7 +626,8 @@
* With threads, GC_mark_roots needs to know how to do this.
* Called with allocator lock held.
*/
-# if defined(MSWIN32) || defined(MSWINCE) || defined(CYGWIN32)
+# if defined(MSWIN32) || defined(MSWINCE) \
+ || (defined(CYGWIN32) && !defined(USE_MMAP))
# define is_writable(prot) ((prot) == PAGE_READWRITE \
|| (prot) == PAGE_WRITECOPY \
|| (prot) == PAGE_EXECUTE_READWRITE \
@@ -800,7 +801,7 @@
# endif
}
- /* Return the first nonaddressible location > p (up) or */
+ /* Return the first non-addressable location > p (up) or */
/* the smallest location q s.t. [q,p) is addressable (!up). */
/* We assume that p (up) or p-1 (!up) is addressable. */
/* Requires allocation lock. */
@@ -1004,7 +1005,7 @@
#if !defined(BEOS) && !defined(AMIGA) && !defined(MSWIN32) \
&& !defined(MSWINCE) && !defined(OS2) && !defined(NOSYS) && !defined(ECOS)
\
- && !defined(CYGWIN32)
+ && (!defined(CYGWIN32) || defined(USE_MMAP))
ptr_t GC_get_main_stack_base(void)
{
@@ -1247,8 +1248,8 @@
/* Unfortunately, we have to handle win32s very differently from NT,
*/
/* Since VirtualQuery has very different semantics. In particular, */
/* under win32s a VirtualQuery call on an unmapped page returns an */
- /* invalid result. Under NT, GC_register_data_segments is a noop and
*/
- /* all real work is done by GC_register_dynamic_libraries. Under */
+ /* invalid result. Under NT, GC_register_data_segments is a no-op */
+ /* and all real work is done by GC_register_dynamic_libraries. Under
*/
/* win32s, we cannot find the data segments associated with dll's. */
/* We register the main data segment here. */
GC_bool GC_no_win32_dlls = FALSE;
@@ -2125,7 +2126,7 @@
}
/* Push the contents of an old object. We treat this as stack */
-/* data only becasue that makes it robust against mark stack */
+/* data only because that makes it robust against mark stack */
/* overflow. */
PCR_ERes GC_push_old_obj(void *p, size_t size, PCR_Any data)
{
@@ -2368,7 +2369,7 @@
/* Is the HBLKSIZE sized page at h marked dirty in the local buffer? */
/* If the actual page size is different, this returns TRUE if any */
/* of the pages overlapping h are dirty. This routine may err on the */
-/* side of labelling pages as dirty (and this implementation does). */
+/* side of labeling pages as dirty (and this implementation does). */
/*ARGSUSED*/
GC_bool GC_page_was_dirty(struct hblk *h)
{
@@ -2426,7 +2427,7 @@
/* Is the HBLKSIZE sized page at h marked dirty in the local buffer? */
/* If the actual page size is different, this returns TRUE if any */
/* of the pages overlapping h are dirty. This routine may err on the */
-/* side of labelling pages as dirty (and this implementation does). */
+/* side of labeling pages as dirty (and this implementation does). */
GC_bool GC_page_was_dirty(struct hblk *h)
{
register word index;
@@ -2622,13 +2623,13 @@
# include <errno.h>
# if defined(FREEBSD)
# define SIG_OK TRUE
-# define CODE_OK (code == BUS_PAGE_FAULT)
+# define CODE_OK (si -> si_code == BUS_PAGE_FAULT)
# elif defined(OSF1)
# define SIG_OK (sig == SIGSEGV)
-# define CODE_OK (code == 2 /* experimentally determined */)
+# define CODE_OK (si -> si_code == 2 /* experimentally determined */)
# elif defined(IRIX5)
# define SIG_OK (sig == SIGSEGV)
-# define CODE_OK (code == EACCES)
+# define CODE_OK (si -> si_code == EACCES)
# elif defined(HURD)
# define SIG_OK (sig == SIGBUS || sig == SIGSEGV)
# define CODE_OK TRUE
@@ -2645,9 +2646,6 @@
|| (si -> si_code == BUS_UNKNOWN) \
|| (si -> si_code == SEGV_UNKNOWN) \
|| (si -> si_code == BUS_OBJERR)
-# elif defined(FREEBSD)
-# define SIG_OK (sig == SIGBUS)
-# define CODE_OK (si -> si_code == BUS_PAGE_FAULT)
# elif defined(SUNOS5SIGS)
# define SIG_OK (sig == SIGSEGV)
# define CODE_OK (si -> si_code == SEGV_ACCERR)
@@ -3136,7 +3134,7 @@
*/
/*
- * This implementaion assumes a Solaris 2.X like /proc pseudo-file-system
+ * This implementation assumes a Solaris 2.X like /proc pseudo-file-system
* from which we can read page modified bits. This facility is far from
* optimal (e.g. we would like to get the info for only some of the
* address space), but it avoids intercepting system calls.
@@ -3573,7 +3571,7 @@
}
/* All this SIGBUS code shouldn't be necessary. All protection faults should
- be going throught the mach exception handler. However, it seems a SIGBUS is
+ be going through the mach exception handler. However, it seems a SIGBUS is
occasionally sent for some unknown reason. Even more odd, it seems to be
meaningless and safe to ignore. */
#ifdef BROKEN_EXCEPTION_HANDLING
@@ -3608,7 +3606,7 @@
exception_mask_t mask;
if (GC_print_stats == VERBOSE)
- GC_log_printf("Inititalizing mach/darwin mprotect virtual dirty bit "
+ GC_log_printf("Initializing mach/darwin mprotect virtual dirty bit "
"implementation\n");
# ifdef BROKEN_EXCEPTION_HANDLING
WARN("Enabling workarounds for various darwin "
@@ -3815,7 +3813,7 @@
/* Ugh... just like the SIGBUS problem above, it seems we get a bogus
KERN_PROTECTION_FAILURE every once and a while. We wait till we get
a bunch in a row before doing anything about it. If a "real" fault
- ever occurres it'll just keep faulting over and over and we'll hit
+ ever occurs it'll just keep faulting over and over and we'll hit
the limit pretty quickly. */
# ifdef BROKEN_EXCEPTION_HANDLING
static char *last_fault;
Index: libgc/pthread_stop_world.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/pthread_stop_world.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- libgc/pthread_stop_world.c 30 Aug 2008 13:57:43 -0000 1.6
+++ libgc/pthread_stop_world.c 22 Oct 2008 19:20:02 -0000 1.7
@@ -535,7 +535,7 @@
ABORT("Cannot set SIG_THR_RESTART handler");
}
- /* Inititialize suspend_handler_mask. It excludes SIG_THR_RESTART. */
+ /* Initiialize suspend_handler_mask. It excludes SIG_THR_RESTART. */
if (sigfillset(&suspend_handler_mask) != 0) ABORT("sigfillset() failed");
GC_remove_allowed_signals(&suspend_handler_mask);
if (sigdelset(&suspend_handler_mask, SIG_THR_RESTART) != 0)
Index: libgc/pthread_support.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/pthread_support.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- libgc/pthread_support.c 30 Aug 2008 13:57:43 -0000 1.9
+++ libgc/pthread_support.c 22 Oct 2008 19:20:03 -0000 1.10
@@ -21,7 +21,7 @@
* guaranteed by the pthread standard, though it now does
* very little of that. It now also supports NPTL, and many
* other Posix thread implementations. We are trying to merge
- * all flavors of pthread dupport code into this file.
+ * all flavors of pthread support code into this file.
*/
/* DG/UX ix86 support <address@hidden> */
/*
@@ -1256,7 +1256,7 @@
/* yield by calling pthread_mutex_lock(); it never makes sense to */
/* explicitly sleep. */
-#define LOCK_STATS
+/* #define LOCK_STATS */
#ifdef LOCK_STATS
unsigned long GC_spin_count = 0;
unsigned long GC_block_count = 0;
Index: libgc/ptr_chck.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/ptr_chck.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- libgc/ptr_chck.c 30 Aug 2008 13:57:43 -0000 1.4
+++ libgc/ptr_chck.c 22 Oct 2008 19:20:04 -0000 1.5
@@ -255,10 +255,10 @@
}
-GC_API void * GC_pre_incr (void **p, size_t how_much)
+GC_API void * GC_pre_incr (void **p, ptrdiff_t how_much)
{
void * initial = *p;
- void * result = GC_same_obj((void *)((word)initial + how_much), initial);
+ void * result = GC_same_obj((void *)((ptr_t)initial + how_much), initial);
if (!GC_all_interior_pointers) {
(void) GC_is_valid_displacement(result);
@@ -266,10 +266,10 @@
return (*p = result);
}
-GC_API void * GC_post_incr (void **p, size_t how_much)
+GC_API void * GC_post_incr (void **p, ptrdiff_t how_much)
{
void * initial = *p;
- void * result = GC_same_obj((void *)((word)initial + how_much), initial);
+ void * result = GC_same_obj((void *)((ptr_t)initial + how_much), initial);
if (!GC_all_interior_pointers) {
(void) GC_is_valid_displacement(result);
Index: libgc/reclaim.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/reclaim.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/reclaim.c 30 Aug 2008 13:57:43 -0000 1.7
+++ libgc/reclaim.c 22 Oct 2008 19:20:05 -0000 1.8
@@ -216,7 +216,7 @@
GC_ASSERT(GC_find_header((ptr_t)hbp) == hhdr);
GC_remove_protection(hbp, 1, (hhdr)->hb_descr == 0 /* Pointer-free? */);
- if (init) {
+ if (init || GC_debugging_started) {
result = GC_reclaim_clear(hbp, hhdr, sz, list, count);
} else {
GC_ASSERT((hhdr)->hb_descr == 0 /* Pointer-free block */);
@@ -247,7 +247,7 @@
GC_reclaim_check(hbp, hhdr, sz);
} else {
*flh = GC_reclaim_generic(hbp, hhdr, sz,
- (ok -> ok_init || GC_debugging_started),
+ ok -> ok_init,
*flh, &GC_bytes_found);
}
}
Index: libgc/thread_local_alloc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/thread_local_alloc.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/thread_local_alloc.c 30 Aug 2008 13:57:43 -0000 1.2
+++ libgc/thread_local_alloc.c 22 Oct 2008 19:20:06 -0000 1.3
@@ -225,8 +225,8 @@
/* fundamental issue is that we may end up marking a free list, which */
/* has freelist links instead of "vtable" pointers. That is usually */
/* OK, since the next object on the free list will be cleared, and */
-/* will thus be interpreted as containg a zero descriptor. That's fine
*/
-/* if the object has not yet been initialized. But there are */
+/* will thus be interpreted as containing a zero descriptor. That's */
+/* fine if the object has not yet been initialized. But there are */
/* interesting potential races.
*/
/* In the case of incremental collection, this seems hopeless, since */
/* the marker may run asynchronously, and may pick up the pointer to */
Index: libgc/typd_mlc.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/typd_mlc.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libgc/typd_mlc.c 30 Aug 2008 13:57:43 -0000 1.5
+++ libgc/typd_mlc.c 22 Oct 2008 19:20:07 -0000 1.6
@@ -28,7 +28,7 @@
* must trace the complex_descriptor.
*
* Note that descriptors inside objects may appear cleared, if we encounter a
- * false refrence to an object on a free list. In the GC_descr case, this
+ * false reference to an object on a free list. In the GC_descr case, this
* is OK, since a 0 descriptor corresponds to examining no fields.
* In the complex_descriptor case, we explicitly check for that case.
*
Index: libgc/win32_threads.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/win32_threads.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -b -r1.18 -r1.19
--- libgc/win32_threads.c 30 Aug 2008 13:57:44 -0000 1.18
+++ libgc/win32_threads.c 22 Oct 2008 19:20:08 -0000 1.19
@@ -313,7 +313,7 @@
{
GC_vthread me;
- /* The following should be a noop according to the win32 */
+ /* The following should be a no-op according to the win32 */
/* documentation. There is empirical evidence that it */
/* isn't. - HB */
# if defined(MPROTECT_VDB)
@@ -328,7 +328,7 @@
if (GC_win32_dll_threads) {
int i;
/* It appears to be unsafe to acquire a lock here, since this */
- /* code is apparently not preeemptible on some systems. */
+ /* code is apparently not preemptible on some systems. */
/* (This is based on complaints, not on Microsoft's official */
/* documentation, which says this should perform "only simple */
/* initialization tasks".) */
@@ -1212,7 +1212,6 @@
int GC_pthread_join(pthread_t pthread_id, void **retval) {
int result;
- int i;
GC_thread joinee;
# if DEBUG_CYGWIN_THREADS
@@ -1464,8 +1463,6 @@
DWORD thread_id = GetCurrentThreadId();
pthread_t pthread_id = pthread_self();
GC_thread me;
- GC_bool detached;
- int i;
# if DEBUG_CYGWIN_THREADS
GC_printf("thread 0x%x(0x%x) starting...\n",(int)pthread_id,
@@ -1579,7 +1576,7 @@
#else /* !GC_PTHREADS */
/*
- * We avoid acquiring locks here, since this doesn't seem to be preemptable.
+ * We avoid acquiring locks here, since this doesn't seem to be preemptible.
* This may run with an uninitialized collector, in which case we don't do
much.
* This implies that no threads other than the main one should be created
* with an uninitialized collector. (The alternative of initializing
Index: libgc/cord/cord.am
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/cord/cord.am,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/cord/cord.am 31 Jul 2008 19:39:06 -0000 1.1
+++ libgc/cord/cord.am 22 Oct 2008 19:20:10 -0000 1.2
@@ -15,3 +15,5 @@
cord/cordbscs.c cord/cordtest.c cord/de.c \
cord/cordprnt.c cord/cordxtra.c cord/de_cmds.h \
cord/de_win.h cord/de_win.c cord/de_win.RC cord/de_win.ICO
+
+pkginclude_HEADERS += include/cord.h
Index: libgc/doc/README
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/README,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- libgc/doc/README 30 Aug 2008 13:57:44 -0000 1.10
+++ libgc/doc/README 22 Oct 2008 19:20:11 -0000 1.11
@@ -31,6 +31,11 @@
collector. (If you are concerned about such things, I recommend you look
at the notice in config.guess or ltmain.sh.)
+The atomic_ops library contains some code that is covered by the GNU General
+Public License, but is not needed by, nor linked into the collector library.
+It is included here only becuase the atomic_ops distribution is, for
+simplicity, included in its entirety.
+
This is version 7.2alpha1 of a conservative garbage collector for C and C++.
You might find a more recent version of this at
@@ -202,21 +207,24 @@
On other platforms, typically only the latter option is available, though
with a different supplied Makefile.)
- Typing "make test" nstead of "make" will automatically build the collector
-and then run setjmp_test and gctest. Setjmp_test will give you information
-about configuring the collector, which is useful primarily if you have
-a machine that's not already supported. Gctest is a somewhat superficial
-test of collector functionality. Failure is indicated by a core dump or
-a message to the effect that the collector is broken. Gctest takes about
-a second to two to run on reasonable 2007 vintage desktops.
-It may use up to about 30MB of memory. (The
-multi-threaded version will use more. 64-bit versions may use more.)
-"Make test" will also, as its last step, attempt to build and test the
-"cord" string library.)
+ For the Makefile.direct-based process, typing "make test" instead of "make"
+will automatically build the collector and then run setjmp_test and gctest.
+Setjmp_test will give you information about configuring the collector, which is
+useful primarily if you have a machine that's not already supported. Gctest is
+a somewhat superficial test of collector functionality. Failure is indicated
+by a core dump or a message to the effect that the collector is broken. Gctest
+takes about a second to two to run on reasonable 2007 vintage desktops. It may
+use up to about 30MB of memory. (The multi-threaded version will use more.
+64-bit versions may use more.) "Make test" will also, as its last step, attempt
+to build and test the "cord" string library.)
- The Makefile will generate a library gc.a which you should link against.
+ Makefile.direct will generate a library gc.a which you should link against.
Typing "make cords" will add the cord library to gc.a.
-Note that this requires an ANSI C compiler.
+
+ The GNU style build process understands the usual targets. "Make check"
+runs a number of tests. "Make install" installs at least libgc, and libcord.
+Try "./configure --help" to see the configuration options. It is currently
+not possible to exercise all combinations of build options this way.
It is suggested that if you need to replace a piece of the collector
(e.g. GC_mark_rts.c) you simply list your version ahead of gc.a on the
Index: libgc/doc/README.DGUX386
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/README.DGUX386,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/doc/README.DGUX386 8 Apr 2002 23:36:50 -0000 1.1
+++ libgc/doc/README.DGUX386 22 Oct 2008 19:20:12 -0000 1.2
@@ -23,7 +23,7 @@
to build only the static version of libgc.
To enable debugging messages please do:
- 1) Add the "--enable-full-debug" flag during configuration.
+ 1) Add the "--enable-gc-debug" flag during configuration.
2) Edit the file linux-threads.c and uncommnect the line:
/* #define DEBUG_THREADS 1 */ to --->
Index: libgc/doc/README.autoconf
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/README.autoconf,v
retrieving revision 1.1.1.1
retrieving revision 1.2
diff -u -b -r1.1.1.1 -r1.2
--- libgc/doc/README.autoconf 9 Nov 2001 02:22:11 -0000 1.1.1.1
+++ libgc/doc/README.autoconf 22 Oct 2008 19:20:12 -0000 1.2
@@ -47,7 +47,9 @@
[same as prefix]
--enable-threads=TYPE choose threading package
--enable-parallel-mark parallelize marking and free list construction
- --enable-full-debug include full support for pointer backtracing etc.
+ --enable-gc-debug (--enable-full-debug before about 7.0)
+ include full support for pointer backtracing etc.
+
Unless --prefix is set (or --exec-prefix or one of the more obscure options),
make install will install libgc.a and libgc.so in /usr/local/bin, which
Index: libgc/doc/debugging.html
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/debugging.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- libgc/doc/debugging.html 26 May 2004 22:32:56 -0000 1.4
+++ libgc/doc/debugging.html 22 Oct 2008 19:20:13 -0000 1.5
@@ -1,5 +1,7 @@
-<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en-us">
<HEAD>
+<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII" >
<TITLE>Debugging Garbage Collector Related Problems</title>
</head>
<BODY>
@@ -81,8 +83,8 @@
size_t old_size = GC_size(p);
void * result;
- if (new_size <= 10000) return(GC_realloc(p, new_size));
- if (new_size <= old_size) return(p);
+ if (new_size <= 10000) return(GC_realloc(p, new_size));
+ if (new_size <= old_size) return(p);
result = GC_malloc_ignore_off_page(new_size);
if (result == 0) return(0);
memcpy(result,p,old_size);
@@ -186,7 +188,8 @@
to allocate large objects. (See <TT>gc.h</tt> and above for details.
Large means > 100K in most environments.)
<LI> If your heap size is larger than 100MB or so, build the collector with
--DLARGE_CONFIG. This allows the collector to keep more precise black-list
+<TT>-DLARGE_CONFIG</tt>.
+This allows the collector to keep more precise black-list
information.
<LI> If you are using heaps close to, or larger than, a gigabyte on a 32-bit
machine, you may want to consider moving to a platform with 64-bit pointers.
Index: libgc/doc/gcinterface.html
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/gcinterface.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- libgc/doc/gcinterface.html 31 Jul 2008 19:39:07 -0000 1.3
+++ libgc/doc/gcinterface.html 22 Oct 2008 19:20:13 -0000 1.4
@@ -1,5 +1,7 @@
-<!DOCTYPE HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en-us">
<HEAD>
+<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII" >
<TITLE>Garbage Collector Interface</TITLE>
</HEAD>
<BODY>
@@ -152,8 +154,15 @@
</dl>
<P>
If you are concerned with multiprocessor performance and scalability,
-you should consider enabling and using thread local allocation (<I>e.g.</i>
-<TT>GC_LOCAL_MALLOC</tt>, see <TT>gc_local_alloc.h</tt>. If your platform
+you should consider enabling and using thread local allocation.
+For GC versions before 7.0, use <I>e.g.</i>
+<TT>GC_LOCAL_MALLOC</tt> and see <TT>gc_local_alloc.h</tt>;
+for later versions enabling thread-local allocations when the collector
+library is built changes the
+implementation of <TT>GC_MALLOC</tt>, so the client doesn't need to
+change.
+<P>
+If your platform
supports it, you should build the collector with parallel marking support
(<TT>-DPARALLEL_MARK</tt>, or <TT>--enable-parallel-mark</tt>).
<P>
Index: libgc/doc/leak.html
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/leak.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/doc/leak.html 31 Jul 2008 19:39:07 -0000 1.2
+++ libgc/doc/leak.html 22 Oct 2008 19:20:13 -0000 1.3
@@ -1,5 +1,7 @@
-<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en-us">
<HEAD>
+<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII" >
<TITLE>Using the Garbage Collector as Leak Detector</title>
</head>
<BODY>
@@ -27,7 +29,8 @@
features:
<OL>
<LI> Leak detection mode can be initiated at run-time by
-setting GC_find_leak instead of building the collector with FIND_LEAK
+setting <TT>GC_find_leak</tt> instead of building the
+collector with <TT>FIND_LEAK</tt>
defined. This variable should be set to a nonzero value
at program startup.
<LI> Leaked objects should be reported and then correctly garbage collected.
@@ -38,7 +41,7 @@
<P>
To use the collector as a leak detector, follow the following steps:
<OL>
-<LI> Build the collector with -DFIND_LEAK. Otherwise use default
+<LI> Build the collector with <TT>-DFIND_LEAK</tt>. Otherwise use default
build options.
<LI> Change the program so that all allocation and deallocation goes
through the garbage collector.
@@ -92,9 +95,9 @@
#define CHECK_LEAKS() GC_gcollect()
</pre>
<P>
-Assume the collector has been built with -DFIND_LEAK. (For very
-new versions of the collector, we could instead add the statement
-<TT>GC_find_leak = 1</tt> as the first statement in <TT>main</tt>.
+Assume the collector has been built with <TT>-DFIND_LEAK</tt>. (For
+newer versions of the collector, we could instead add the statement
+<TT>GC_find_leak = 1</tt> as the first statement in <TT>main()</tt>.
<P>
The program to be tested for leaks can then look like:
<PRE>
@@ -105,13 +108,13 @@
int i;
/* GC_find_leak = 1; for new collector versions not */
/* compiled with -DFIND_LEAK. */
- for (i = 0; i < 10; ++i) {
+ for (i = 0; i < 10; ++i) {
p[i] = malloc(sizeof(int)+i);
}
- for (i = 1; i < 10; ++i) {
+ for (i = 1; i < 10; ++i) {
free(p[i]);
}
- for (i = 0; i < 9; ++i) {
+ for (i = 0; i < 9; ++i) {
p[i] = malloc(sizeof(int)+i);
}
CHECK_LEAKS();
@@ -165,29 +168,34 @@
a very recent (7.0alpha7+) collector version on Linux.</i>
On most platforms this does not
work at all for multithreaded programs.
-<LI> If possible, ensure that the addr2line program is installed in
-/usr/bin. (It comes with RedHat Linux.)
-<LI> If possible, compile a.out with full debug information.
+<LI> If possible, ensure that the <TT>addr2line</tt> program is installed in
+<TT>/usr/bin</tt>. (It comes with most Linux distributions.)
+<LI> If possible, compile your program, which we'll call <TT>a.out</tt>,
+with full debug information.
This will improve the quality of the leak reports. With this approach, it is
-no longer necessary to call GC_ routines explicitly, though that can also
+no longer necessary to call <TT>GC_</tt> routines explicitly,
+though that can also
improve the quality of the leak reports.
<LI> Build the collector and install it in directory <I>foo</i> as follows:
<UL>
-<LI> <TT>configure --prefix=<I>foo</i> --enable-full-debug
--enable-redirect-malloc
+<LI> <TT>configure --prefix=<I>foo</i> --enable-gc-debug
--enable-redirect-malloc
--disable-threads</tt>
<LI> <TT>make</tt>
<LI> <TT>make install</tt>
</ul>
-With a very recent collector on Linux, it may be safe to omit the
<TT>--disable-threads</tt>.
+With a very recent collector on Linux, it may sometimes be safe to omit
+the <TT>--disable-threads</tt>. But the combination of thread support
+and <TT>malloc</tt> replacement is not yet rock solid.
<LI> Set environment variables as follows:
<UL>
-<LI> LD_PRELOAD=<I>foo</i>/lib/libgc.so
-<LI> GC_FIND_LEAK
-<LI> You may also want to set GC_PRINT_STATS (to confirm that the collector
-is running) and/or GC_LOOP_ON_ABORT (to facilitate debugging from another
+<LI> <TT>LD_PRELOAD=</tt><I>foo</i><TT>/lib/libgc.so</tt>
+<LI> <TT>GC_FIND_LEAK</tt>
+<LI> You may also want to set <TT>GC_PRINT_STATS</tt>
+(to confirm that the collector is running) and/or
+<TT>GC_LOOP_ON_ABORT</tt> (to facilitate debugging from another
window if something goes wrong).
-</ul
-<LI> Simply run a.out as you normally would. Note that if you run anything
+</ul>
+<LI> Simply run <TT>a.out</tt> as you normally would. Note that if you run
anything
else (<I>e.g.</i> your editor) with those environment variables set,
it will also be leak tested. This may or may not be useful and/or
embarrassing. It can generate
Index: libgc/doc/simple_example.html
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/doc/simple_example.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/doc/simple_example.html 26 May 2004 22:47:11 -0000 1.1
+++ libgc/doc/simple_example.html 22 Oct 2008 19:20:15 -0000 1.2
@@ -1,5 +1,7 @@
-<HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en-us">
<HEAD>
+<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII" >
<TITLE>Using the Garbage Collector: A simple example</title>
</head>
<BODY>
@@ -13,8 +15,8 @@
If you haven't already so, unpack the collector and enter
the newly created directory with
<PRE>
-tar xvfz gc<version>.tar.gz
-cd gc<version>
+tar xvfz gc<version>.tar.gz
+cd gc<version>
</pre>
<P>
You can configure, build, and install the collector in a private
@@ -27,8 +29,8 @@
</pre>
Here the "<TT>make check</tt>" command is optional, but highly recommended.
It runs a basic correctness test which usually takes well under a minute.
+<H3><FONT COLOR=green>Other platforms</font></h3>
<FONT COLOR=green>
-<H3>Other platforms</h3>
On non-Unix, non-Linux platforms, the collector is usually built by copying
the appropriate makefile (see the platform-specific README in doc/README.xxx
in the distribution) to the file "Makefile" (overwriting the copy of
@@ -36,24 +38,34 @@
(or "nmake" or ...). This builds the library in the source tree. You may
want to move it and the files in the include directory to a more convenient
place.
+</font>
<P>
+<FONT COLOR=green>
If you use a makefile that does not require running a configure script,
you should first look at the makefile, and adjust any options that are
documented there.
+</font>
<P>
+<FONT COLOR=green>
If your platform provides a "make" utility, that is generally preferred
to platform- and compiler- dependent "project" files. (At least that is the
strong preference of the would-be maintainer of those project files.)
-<H3>Threads</h3>
+</font>
+<H3><FONT COLOR=green>Threads</font></h3>
+<FONT COLOR=green>
If you need thread support, configure the collector with
-<PRE>
+</font>
+<PRE style="color:green">
--enable-threads=posix --enable-thread-local-alloc --enable-parallel-mark
</pre>
+<FONT COLOR=green>
instead of
<TT>--disable-threads</tt>
If your target is a real old-fashioned uniprocessor (no "hyperthreading",
etc.) you will want to omit <TT>--enable-parallel-mark</tt>.
-<H3>C++</h3>
+</font>
+<H3><FONT COLOR=green>C++</font></h3>
+<FONT COLOR=green>
You will need to include the C++ support, which unfortunately tends to
be among the least portable parts of the collector, since it seems
to rely on some corner cases of the language. On Linux, it
@@ -93,7 +105,7 @@
int i;
GC_INIT(); /* Optional on Linux/X86; see below. */
- for (i = 0; i < 10000000; ++i)
+ for (i = 0; i < 10000000; ++i)
{
int **p = (int **) GC_MALLOC(sizeof(int *));
int *q = (int *) GC_MALLOC_ATOMIC(sizeof(int));
@@ -105,55 +117,75 @@
return 0;
}
</pre>
+<H3><FONT COLOR=green>Interaction with the system malloc</font></h3>
<FONT COLOR=green>
-<H3>Interaction with the system malloc</h3>
It is usually best not to mix garbage-collected allocation with the system
<TT>malloc-free</tt>. If you do, you need to be careful not to store
pointers to the garbage-collected heap in memory allocated with the system
<TT>malloc</tt>.
-<H3>Other Platforms</h3>
+</font>
+
+<H3><FONT COLOR=green>Other Platforms</font></h3>
+<FONT COLOR=green>
On some other platforms it is necessary to call <TT>GC_INIT()</tt> from the
main program,
which is presumed to be part of the main executable, not a dynamic library.
This can never hurt, and is thus generally good practice.
+</font>
-<H3>Threads</h3>
+<H3><FONT COLOR=green>Threads</font></h3>
+<FONT COLOR=green>
For a multithreaded program some more rules apply:
+</font>
<UL>
<LI>
+<FONT COLOR=green>
Files that either allocate through the GC <I>or make thread-related calls</i>
should first define the macro <TT>GC_THREADS</tt>, and then
include <TT>"gc.h"</tt>. On some platforms this will redefine some
threads primitives, e.g. to let the collector keep track of thread creation.
+</font>
<LI>
-To take advantage of fast thread-local allocation, use the following instead
+<FONT COLOR=green>
+To take advantage of fast thread-local allocation in versions before 7.0,
+use the following instead
of including <TT>gc.h</tt>:
-<PRE>
+</font>
+<PRE style="color:green">
#define GC_REDIRECT_TO_LOCAL
#include "gc_local_alloc.h"
</pre>
+<FONT COLOR=green>
This will cause GC_MALLOC and GC_MALLOC_ATOMIC to keep per-thread allocation
caches, and greatly reduce the number of lock acquisitions during allocation.
+For versions after 7.0, this happens implicitly if the collector is built
+with thread-local allocation enabled.
+</font>
</ul>
-<H3>C++</h3>
+<H3><FONT COLOR=green>C++</font></h3>
+<FONT COLOR=green>
In the case of C++, you need to be especially careful not to store pointers
to the garbage-collected heap in areas that are not traced by the collector.
The collector includes some <A HREF="gcinterface.html">alternate interfaces</a>
to make that easier.
+</font>
-<H3>Debugging</h3>
+<H3><FONT COLOR=green>Debugging</font></h3>
+<FONT COLOR=green>
Additional debug checks can be performed by defining <TT>GC_DEBUG</tt> before
including <TT>gc.h</tt>. Additional options are available if the collector
-is also built with <TT>--enable-full_debug</tt> and all allocations are
+is also built with <TT>--enable-gc-debug</tt> (<TT>--enable-full-debug</tt> in
+some older versions) and all allocations are
performed with <TT>GC_DEBUG</tt> defined.
+</font>
-<H3>What if I can't rewrite/recompile my program?</h3>
+<H3><FONT COLOR=green>What if I can't rewrite/recompile my program?</font></h3>
+<FONT COLOR=green>
You may be able to build the collector with <TT>--enable-redirect-malloc</tt>
and set the <TT>LD_PRELOAD</tt> environment variable to point to the resulting
library, thus replacing the standard <TT>malloc</tt> with its garbage-collected
counterpart. This is rather platform dependent. See the
<A HREF="leak.html">leak detection documentation</a> for some more details.
-
</font>
<H2>Compiling and linking</h2>
@@ -171,10 +203,8 @@
used instead, provided we arranged for the dynamic loader to find
it, e.g. by setting <TT>LD_LIBRARY_PATH</tt>.
+<H3><FONT COLOR=green>Threads</font></h3>
<FONT COLOR=green>
-
-<H3>Threads</h3>
-
On pthread platforms, you will of course also have to link with
<TT>-lpthread</tt>,
and compile with any thread-safety options required by your compiler.
@@ -183,7 +213,6 @@
Looking at threadlibs.c in the GC build directory
should give you the appropriate
list if a plain <TT>-lpthread</tt> doesn't work.
-
</font>
<H2>Running the executable</h2>
Index: libgc/include/gc.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/gc.h,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- libgc/include/gc.h 30 Aug 2008 13:57:44 -0000 1.17
+++ libgc/include/gc.h 22 Oct 2008 19:20:16 -0000 1.18
@@ -129,7 +129,7 @@
GC_API int GC_java_finalization;
/* Mark objects reachable from finalizable */
- /* objects in a separate postpass. This makes */
+ /* objects in a separate post-pass. This makes */
/* it a bit safer to use non-topologically- */
/* ordered finalization. Default value is */
/* determined by JAVA_FINALIZATION macro. */
@@ -164,7 +164,7 @@
GC_API int GC_set_dont_expand(int);
GC_API int GC_use_entire_heap;
- /* Causes the nonincremental collector to use the */
+ /* Causes the non-incremental collector to use the */
/* entire heap before collecting. This was the only */
/* option for GC versions < 5.0. This sometimes */
/* results in more large block fragmentation, since */
@@ -265,7 +265,7 @@
/*
* general purpose allocation routines, with roughly malloc calling conv.
* The atomic versions promise that no relevant pointers are contained
- * in the object. The nonatomic versions guarantee that the new object
+ * in the object. The non-atomic versions guarantee that the new object
* is cleared. GC_malloc_stubborn promises that no changes to the object
* will occur after GC_end_stubborn_change has been called on the
* result of GC_malloc_stubborn. GC_malloc_uncollectable allocates an object
@@ -301,9 +301,9 @@
* The collector is implicitly informed of coming change when such
* an object is first allocated. The following routines inform the
* collector that an object will no longer be changed, or that it will
- * once again be changed. Only nonNIL pointer stores into the object
+ * once again be changed. Only non-NULL pointer stores into the object
* are considered to be changes. The argument to GC_end_stubborn_change
- * must be exacly the value returned by GC_malloc_stubborn or passed to
+ * must be exactly the value returned by GC_malloc_stubborn or passed to
* GC_change_stubborn. (In the second case it may be an interior pointer
* within 512 bytes of the beginning of the objects.)
* There is a performance penalty for allowing more than
@@ -420,7 +420,7 @@
/* ineffective.
*/
GC_API void GC_disable(void);
-/* Reenable garbage collection. GC_disable() and GC_enable() calls */
+/* Re-enable garbage collection. GC_disable() and GC_enable() calls */
/* nest. Garbage collection is enabled if the number of calls to both */
/* both functions is equal. */
GC_API void GC_enable(void);
@@ -428,7 +428,7 @@
/* Enable incremental/generational collection. */
/* Not advisable unless dirty bits are */
/* available or most heap objects are */
-/* pointerfree(atomic) or immutable. */
+/* pointer-free (atomic) or immutable. */
/* Don't use in leak finding mode. */
/* Ignored if GC_dont_gc is true. */
/* Only the generational piece of this is */
@@ -627,7 +627,7 @@
# define GC_REGISTER_DISPLACEMENT(n) GC_register_displacement(n)
# endif
/* The following are included because they are often convenient, and */
-/* reduce the chance for a misspecifed size argument. But calls may */
+/* reduce the chance for a misspecified size argument. But calls may */
/* expand to something syntactically incorrect if t is a complicated */
/* type expression. */
# define GC_NEW(t) (t *)GC_MALLOC(sizeof (t))
@@ -677,7 +677,7 @@
/* a signal, the object may be left with no */
/* finalization, even if neither the old nor new */
/* finalizer were NULL. */
- /* Obj should be the nonNULL starting address of an */
+ /* Obj should be the non-NULL starting address of an */
/* object allocated by GC_malloc or friends. */
/* Note that any garbage collectable object referenced */
/* by cd will be considered accessible until the */
@@ -781,7 +781,7 @@
/* cleared. */
/* This can be used to implement certain types of */
/* weak pointers. Note however that this generally */
- /* requires that thje allocation lock is held (see */
+ /* requires that the allocation lock is held (see */
/* GC_call_with_allock_lock() below) when the disguised */
/* pointer is accessed. Otherwise a strong pointer */
/* could be recreated between the time the collector */
@@ -927,8 +927,8 @@
/* the second argument is in units of bytes, not multiples of the */
/* object size. This should either be invoked from a macro, or the */
/* call should be automatically generated. */
-GC_API void * GC_pre_incr (void * *p, size_t how_much);
-GC_API void * GC_post_incr (void * *p, size_t how_much);
+GC_API void * GC_pre_incr (void * *p, ptrdiff_t how_much);
+GC_API void * GC_post_incr (void * *p, ptrdiff_t how_much);
/* Check that p is visible */
/* to the collector as a possibly pointer containing location. */
@@ -954,37 +954,39 @@
/* Safer, but slow, pointer addition. Probably useful mainly with */
/* a preprocessor. Useful only for heap pointers. */
-#ifdef GC_DEBUG
+/* Only the macros without trailing digits are meant to be used
*/
+/* by clients. These are designed to model the available C pointer */
+/* arithmetic expressions. */
+/* Even then, these are probably more useful as */
+/* documentation than as part of the API. */
+/* Note that GC_PTR_ADD evaluates the first argument more than once. */
+#if defined(GC_DEBUG) && defined(__GNUC__)
# define GC_PTR_ADD3(x, n, type_of_result) \
((type_of_result)GC_same_obj((x)+(n), (x)))
# define GC_PRE_INCR3(x, n, type_of_result) \
- ((type_of_result)GC_pre_incr(&(x), (n)*sizeof(*x))
-# define GC_POST_INCR2(x, type_of_result) \
- ((type_of_result)GC_post_incr(&(x), sizeof(*x))
-# ifdef __GNUC__
+ ((type_of_result)GC_pre_incr((void **)(&(x)), (n)*sizeof(*x)))
+# define GC_POST_INCR3(x, n, type_of_result) \
+ ((type_of_result)GC_post_incr((void **)(&(x)), (n)*sizeof(*x)))
# define GC_PTR_ADD(x, n) \
GC_PTR_ADD3(x, n, typeof(x))
# define GC_PRE_INCR(x, n) \
GC_PRE_INCR3(x, n, typeof(x))
-# define GC_POST_INCR(x, n) \
- GC_POST_INCR3(x, typeof(x))
-# else
+# define GC_POST_INCR(x) \
+ GC_POST_INCR3(x, 1, typeof(x))
+# define GC_POST_DECR(x) \
+ GC_POST_INCR3(x, -1, typeof(x))
+#else /* !GC_DEBUG || !__GNUC__ */
/* We can't do this right without typeof, which ANSI */
- /* decided was not sufficiently useful. Repeatedly */
- /* mentioning the arguments seems too dangerous to be */
- /* useful. So does not casting the result. */
-# define GC_PTR_ADD(x, n) ((x)+(n))
-# endif
-#else /* !GC_DEBUG */
-# define GC_PTR_ADD3(x, n, type_of_result) ((x)+(n))
+ /* decided was not sufficiently useful. Without it */
+ /* we resort to the non-debug version. */
+ /* FIXME: This should eventually support C++0x decltype */
# define GC_PTR_ADD(x, n) ((x)+(n))
-# define GC_PRE_INCR3(x, n, type_of_result) ((x) += (n))
# define GC_PRE_INCR(x, n) ((x) += (n))
-# define GC_POST_INCR2(x, n, type_of_result) ((x)++)
-# define GC_POST_INCR(x, n) ((x)++)
+# define GC_POST_INCR(x) ((x)++)
+# define GC_POST_DECR(x) ((x)--)
#endif
-/* Safer assignment of a pointer to a nonstack location. */
+/* Safer assignment of a pointer to a non-stack location. */
#ifdef GC_DEBUG
# define GC_PTR_STORE(p, q) \
(*(void **)GC_is_visible(p) = GC_is_valid_displacement(q))
Index: libgc/include/gc_allocator.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/gc_allocator.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libgc/include/gc_allocator.h 31 Jul 2008 19:39:08 -0000 1.5
+++ libgc/include/gc_allocator.h 22 Oct 2008 19:20:17 -0000 1.6
@@ -26,7 +26,7 @@
* This implements standard-conforming allocators that interact with
* the garbage collector. Gc_alloctor<T> allocates garbage-collectable
* objects of type T. Traceable_allocator<T> allocates objects that
- * are not temselves garbage collected, but are scanned by the
+ * are not themselves garbage collected, but are scanned by the
* collector for pointers to collectable objects. Traceable_alloc
* should be used for explicitly managed STL containers that may
* point to collectable objects.
@@ -49,7 +49,7 @@
#endif
/* First some helpers to allow us to dispatch on whether or not a type
- * is known to be pointerfree.
+ * is known to be pointer-free.
* These are private, except that the client may invoke the
* GC_DECLARE_PTRFREE macro.
*/
@@ -79,8 +79,8 @@
GC_DECLARE_PTRFREE(long double);
/* The client may want to add others. */
-// In the following GC_Tp is GC_true_type iff we are allocating a
-// pointerfree object.
+// In the following GC_Tp is GC_true_type if we are allocating a
+// pointer-free object.
template <class GC_Tp>
inline void * GC_selective_alloc(size_t n, GC_Tp) {
return GC_MALLOC(n);
Index: libgc/include/gc_config_macros.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/gc_config_macros.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- libgc/include/gc_config_macros.h 30 Aug 2008 13:57:44 -0000 1.6
+++ libgc/include/gc_config_macros.h 22 Oct 2008 19:20:18 -0000 1.7
@@ -140,7 +140,7 @@
/* as well? */
# endif
# else /* ! _WIN32_WCE */
-/* Yet more kluges for WinCE */
+/* Yet more kludges for WinCE */
# include <stdlib.h> /* size_t is defined here */
typedef long ptrdiff_t; /* ptrdiff_t is not defined */
# endif
Index: libgc/include/gc_mark.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/gc_mark.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libgc/include/gc_mark.h 30 Aug 2008 13:57:44 -0000 1.5
+++ libgc/include/gc_mark.h 22 Oct 2008 19:20:18 -0000 1.6
@@ -32,7 +32,7 @@
/* A client supplied mark procedure. Returns new mark stack pointer. */
/* Primary effect should be to push new entries on the mark stack. */
/* Mark stack pointer values are passed and returned explicitly. */
-/* Global variables decribing mark stack are not necessarily valid. */
+/* Global variables describing mark stack are not necessarily valid. */
/* (This usually saves a few cycles by keeping things in registers.) */
/* Assumed to scan about GC_PROC_BYTES on average. If it needs to do */
/* much more work than that, it should do it in smaller pieces by */
@@ -74,7 +74,7 @@
#define GC_DS_LENGTH 0 /* The entire word is a length in bytes that */
/* must be a multiple of 4. */
#define GC_DS_BITMAP 1 /* 30 (62) bits are a bitmap describing pointer */
- /* fields. The msb is 1 iff the first word */
+ /* fields. The msb is 1 if the first word */
/* is a pointer. */
/* (This unconventional ordering sometimes */
/* makes the marker slightly faster.) */
@@ -99,7 +99,7 @@
/* object contains a type descriptor in the */
/* first word. */
/* Note that in multithreaded environments */
- /* per object descriptors maust be located in */
+ /* per object descriptors must be located in */
/* either the first two or last two words of */
/* the object, since only those are guaranteed */
/* to be cleared while the allocation lock is */
Index: libgc/include/gc_typed.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/gc_typed.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- libgc/include/gc_typed.h 31 Jul 2008 19:39:08 -0000 1.4
+++ libgc/include/gc_typed.h 22 Oct 2008 19:20:19 -0000 1.5
@@ -87,7 +87,7 @@
GC_descr d);
/* Allocate an array of nelements elements, each of the */
/* given size, and with the given descriptor. */
- /* The elemnt size must be a multiple of the byte */
+ /* The element size must be a multiple of the byte */
/* alignment required for pointers. E.g. on a 32-bit */
/* machine with 16-bit aligned pointers, size_in_bytes */
/* must be a multiple of 2. */
Index: libgc/include/javaxfc.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/javaxfc.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- libgc/include/javaxfc.h 30 Aug 2008 13:57:44 -0000 1.3
+++ libgc/include/javaxfc.h 22 Oct 2008 19:20:19 -0000 1.4
@@ -11,7 +11,7 @@
* This is needed for strict compliance with the Java standard,
* which can make the runtime guarantee that all finalizers are run.
* This is problematic for several reasons:
- * 1) It means that finalizers, and all methods calle by them,
+ * 1) It means that finalizers, and all methods called by them,
* must be prepared to deal with objects that have been finalized in
* spite of the fact that they are still referenced by statically
* allocated pointer variables.
Index: libgc/include/new_gc_alloc.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/new_gc_alloc.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- libgc/include/new_gc_alloc.h 31 Jul 2008 19:39:08 -0000 1.6
+++ libgc/include/new_gc_alloc.h 22 Oct 2008 19:20:20 -0000 1.7
@@ -133,7 +133,7 @@
// real one must be updated with a procedure call.
static size_t GC_bytes_recently_allocd;
- // Same for uncollectable mmory. Not yet reflected in either
+ // Same for uncollectable memory. Not yet reflected in either
// GC_bytes_recently_allocd or GC_non_gc_bytes.
static size_t GC_uncollectable_bytes_recently_allocd;
@@ -183,7 +183,7 @@
// A fast, single-threaded, garbage-collected allocator
// We assume the first word will be immediately overwritten.
-// In this version, deallocation is not a noop, and explicit
+// In this version, deallocation is not a no-op, and explicit
// deallocation is likely to help performance.
template <int dummy>
class single_client_gc_alloc_template {
@@ -347,7 +347,7 @@
typedef traceable_alloc_template < 0 > traceable_alloc;
// We want to specialize simple_alloc so that it does the right thing
-// for all pointerfree types. At the moment there is no portable way to
+// for all pointer-free types. At the moment there is no portable way to
// even approximate that. The following approximation should work for
// SGI compilers, and recent versions of g++.
Index: libgc/include/private/dbg_mlc.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/private/dbg_mlc.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- libgc/include/private/dbg_mlc.h 31 Jul 2008 19:39:08 -0000 1.5
+++ libgc/include/private/dbg_mlc.h 22 Oct 2008 19:20:20 -0000 1.6
@@ -110,7 +110,7 @@
word oh_sf; /* start flag */
# endif /* SHORT_DBG_HDRS */
} oh;
-/* The size of the above structure is assumed not to dealign things, */
+/* The size of the above structure is assumed not to de-align things, */
/* and to be a multiple of the word length. */
#ifdef SHORT_DBG_HDRS
Index: libgc/include/private/gc_locks.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/private/gc_locks.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- libgc/include/private/gc_locks.h 31 Jul 2008 19:39:09 -0000 1.8
+++ libgc/include/private/gc_locks.h 22 Oct 2008 19:20:20 -0000 1.9
@@ -187,7 +187,7 @@
# define I_HOLD_LOCK() TRUE
# define I_DONT_HOLD_LOCK() TRUE
/* Used only in positive assertions or to test whether
*/
- /* we still need to acaquire the lock. TRUE works in
*/
+ /* we still need to acquire the lock. TRUE works in
*/
/* either case.
*/
# endif /* !THREADS */
Index: libgc/include/private/gc_pmark.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/private/gc_pmark.h,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- libgc/include/private/gc_pmark.h 30 Aug 2008 13:57:45 -0000 1.7
+++ libgc/include/private/gc_pmark.h 22 Oct 2008 19:20:21 -0000 1.8
@@ -104,7 +104,7 @@
* also less performant, way.
*/
void GC_do_parallel_mark();
- /* inititate parallel marking. */
+ /* initiate parallel marking. */
extern GC_bool GC_help_wanted; /* Protected by mark lock */
extern unsigned GC_helper_count; /* Number of running helpers. */
@@ -172,10 +172,10 @@
/* For our uses, that's benign: */
# define OR_WORD_EXIT_IF_SET(addr, bits, exit_label) \
{ \
- if (!(*(addr) & (mask))) { \
- AO_or((AO_t *)(addr), (mask); \
+ if (!(*(addr) & (bits))) { \
+ AO_or((AO_t *)(addr), (bits)); \
} else { \
- goto label; \
+ goto exit_label; \
} \
}
# else
@@ -242,7 +242,7 @@
#endif
/* If the mark bit corresponding to current is not set, set it, and */
/* push the contents of the object on the mark stack. Current points */
-/* to the bginning of the object. We rely on the fact that the */
+/* to the beginning of the object. We rely on the fact that the */
/* preceding header calculation will succeed for a pointer past the */
/* first page of an object, only if it is in fact a valid pointer */
/* to the object. Thus we can omit the otherwise necessary tests */
@@ -431,7 +431,7 @@
* real_ptr. That is the job of the caller, if appropriate.
* Note that this is called with the mutator running, but
* with us holding the allocation lock. This is safe only if the
- * mutator needs tha allocation lock to reveal hidden pointers.
+ * mutator needs the allocation lock to reveal hidden pointers.
* FIXME: Why do we need the GC_mark_state test below?
*/
# define GC_MARK_FO(real_ptr, mark_proc) \
Index: libgc/include/private/gc_priv.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/private/gc_priv.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- libgc/include/private/gc_priv.h 30 Aug 2008 13:57:45 -0000 1.9
+++ libgc/include/private/gc_priv.h 22 Oct 2008 19:20:22 -0000 1.10
@@ -123,7 +123,7 @@
/*********************************/
/* #define STUBBORN_ALLOC */
- /* Enable stubborm allocation, and thus a limited */
+ /* Enable stubborn allocation, and thus a limited */
/* form of incremental collection w/o dirty bits. */
/* #define ALL_INTERIOR_POINTERS */
@@ -142,7 +142,7 @@
/* 2. This option makes it hard for the collector */
/* to allocate space that is not ``pointed to'' */
/* by integers, etc. Under SunOS 4.X with a */
- /* statically linked libc, we empiricaly */
+ /* statically linked libc, we empirically */
/* observed that it would be difficult to */
/* allocate individual objects larger than 100K. */
/* Even if only smaller objects are allocated, */
@@ -990,7 +990,7 @@
# endif
# ifdef LARGE_CONFIG
# if CPP_WORDSZ > 32
-# define MAX_HEAP_SECTS 4096 /* overflows at roughly 64 GB */
+# define MAX_HEAP_SECTS 8192 /* overflows at roughly 128 GB */
# else
# define MAX_HEAP_SECTS 768 /* Separately added heap
sections. */
# endif
@@ -998,7 +998,11 @@
# ifdef SMALL_CONFIG
# define MAX_HEAP_SECTS 128 /* Roughly 256MB (128*2048*1K)
*/
# else
-# define MAX_HEAP_SECTS 384 /* Roughly 3GB
*/
+# if CPP_WORDSZ > 32
+# define MAX_HEAP_SECTS 1024 /* Roughly 8GB */
+# else
+# define MAX_HEAP_SECTS 512 /* Roughly 4GB */
+# endif
# endif
# endif
struct HeapSect {
@@ -1017,7 +1021,7 @@
# endif
# ifdef MSWINCE
word _heap_lengths[MAX_HEAP_SECTS];
- /* Commited lengths of memory regions obtained from kernel. */
+ /* Committed lengths of memory regions obtained from kernel. */
# endif
struct roots _static_roots[MAX_ROOT_SETS];
# if !defined(MSWIN32) && !defined(MSWINCE)
@@ -1338,7 +1342,7 @@
void GC_initiate_gc(void);
/* initiate collection. */
/* If the mark state is invalid, this */
- /* becomes full colleection. Otherwise */
+ /* becomes full collection. Otherwise */
/* it's partial. */
void GC_push_all(ptr_t bottom, ptr_t top);
/* Push everything in a range */
@@ -1393,9 +1397,9 @@
/* Push system or application specific roots */
/* onto the mark stack. In some environments */
/* (e.g. threads environments) this is */
- /* predfined to be non-zero. A client supplied */
- /* replacement should also call the original */
- /* function. */
+ /* predefined to be non-zero. A client */
+ /* supplied replacement should also call the */
+ /* original function. */
extern void GC_push_gc_structures(void);
/* Push GC internal roots. These are normally */
/* included in the static data segment, and */
@@ -1871,7 +1875,7 @@
/* Could the page contain valid heap pointers? */
void GC_remove_protection(struct hblk *h, word nblocks,
GC_bool pointerfree);
- /* h is about to be writteni or allocated. Ensure */
+ /* h is about to be written or allocated. Ensure */
/* that it's not write protected by the virtual */
/* dirty bit implementation. */
@@ -2028,7 +2032,7 @@
/* were possible, and a couple of routines to facilitate */
/* catching accesses to bad addresses when that's */
/* possible/needed. */
-#ifdef UNIX_LIKE
+#if defined(UNIX_LIKE) || (defined(NEED_FIND_LIMIT) && defined(CYGWIN32))
# include <setjmp.h>
# if defined(SUNOS5SIGS) && !defined(FREEBSD)
# include <sys/siginfo.h>
Index: libgc/include/private/gcconfig.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/include/private/gcconfig.h,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- libgc/include/private/gcconfig.h 30 Aug 2008 13:57:44 -0000 1.14
+++ libgc/include/private/gcconfig.h 22 Oct 2008 19:20:23 -0000 1.15
@@ -385,7 +385,7 @@
# if defined(_MSC_VER) && defined(_M_IA64)
# define IA64
# define MSWIN32 /* Really win64, but we don't treat 64-bit */
- /* variants as a differnt platform. */
+ /* variants as a different platform. */
# endif
# endif
# if defined(__DJGPP__)
@@ -516,7 +516,7 @@
* For each architecture and OS, the following need to be defined:
*
* CPP_WORDSZ is a simple integer constant representing the word size.
- * in bits. We assume byte addressibility, where a byte has 8 bits.
+ * in bits. We assume byte addressability, where a byte has 8 bits.
* We also assume CPP_WORDSZ is either 32 or 64.
* (We care about the length of pointers, not hardware
* bus widths. Thus a 64 bit processor with a C compiler that uses
@@ -568,7 +568,7 @@
* HEURISTIC2: Take an address inside GC_init's frame, increment it repeatedly
* in small steps (decrement if STACK_GROWS_UP), and read the value
* at each location. Remember the value when the first
- * Segmentation violation or Bus error is signalled. Round that
+ * Segmentation violation or Bus error is signaled. Round that
* to the nearest plausible page boundary, and use that instead
* of STACKBOTTOM.
*
@@ -1141,7 +1141,7 @@
# define PREFETCH(x) \
__asm__ __volatile__ (" prefetchnta %0": : "m"(*(char
*)(x)))
/* Empirically prefetcht0 is much more effective at reducing
*/
- /* cache miss stalls for the targetted load instructions. But it
*/
+ /* cache miss stalls for the targeted load instructions. But it
*/
/* seems to interfere enough with other cache traffic that the net
*/
/* result is worse than prefetchnta.
*/
# if 0
@@ -1165,6 +1165,10 @@
# undef STACK_GRAN
# define STACK_GRAN 0x10000
# define HEURISTIC1
+# ifdef USE_MMAP
+# define NEED_FIND_LIMIT
+# define USE_MMAP_ANON
+# endif
# endif
# ifdef OS2
# define OS_TYPE "OS2"
@@ -1256,7 +1260,7 @@
extern char _end;
extern char *_STACKTOP;
/* Depending on calling conventions Watcom C either precedes
- or does not precedes with undescore names of C-variables.
+ or does not precedes with underscore names of C-variables.
Make sure startup code variables always have the same names. */
#pragma aux __nullarea "*";
#pragma aux _end "*";
@@ -1528,7 +1532,7 @@
/* initialization. */
# define STACKBOTTOM ((ptr_t)(((word)(environ) | (getpagesize()-1))+1))
/* # define HEURISTIC2 */
- /* Normally HEURISTIC2 is too conervative, since */
+ /* Normally HEURISTIC2 is too conservative, since */
/* the text segment immediately follows the stack. */
/* Hence we give an upper pound. */
/* This is currently unused, since we disabled HEURISTIC2 */
@@ -1968,8 +1972,6 @@
# define MPROTECT_VDB
/* We also avoided doing this in the past with GC_WIN32_THREADS */
/* Hopefully that's fixed. */
-# endif
-# if _MSC_VER >= 1300 /* .NET, i.e. > VisualStudio 6 */
# define GWW_VDB
# endif
# define DATAEND /* not needed */
@@ -2132,7 +2134,11 @@
# endif
# ifndef STATIC
+# ifndef NO_DEBUGGING
# define STATIC /* ignore to aid profiling and possibly debugging */
+# else
+# define STATIC static
+# endif
# endif
# if defined(LINUX) || defined(HURD) || defined(__GLIBC__)
@@ -2305,7 +2311,7 @@
/* How to get heap memory from the OS: */
/* Note that sbrk()-like allocation is preferred, since it */
/* usually makes it possible to merge consecutively allocated */
- /* chunks. It also avoids unintented recursion with */
+ /* chunks. It also avoids unintended recursion with */
/* -DREDIRECT_MALLOC. */
/* GET_MEM() returns a HLKSIZE aligned chunk. */
/* 0 is taken to mean failure. */
Index: libgc/libatomic_ops-1.2/ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/ChangeLog,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/ChangeLog 30 Aug 2008 13:57:45 -0000 1.2
+++ libgc/libatomic_ops-1.2/ChangeLog 22 Oct 2008 19:20:24 -0000 1.3
@@ -1,3 +1,27 @@
+2008-10-21 Hans Boehm <address@hidden> (really Ivan Maidanski)
+ * src/atomic_ops/sysdeps/aligned_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/all_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/char_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/gcc/arm.h: Fix comments.
+ * src/atomic_ops/sysdeps/gcc/x86.h: Fix comments.
+ * src/atomic_ops/sysdeps/gcc/x86_64.h: Fix comments.
+ * src/atomic_ops/sysdeps/hpc/hppa.h: Fix comments.
+ * src/atomic_ops/sysdeps/hpc/ia64.h: Fix comments.
+ * src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/int_atomic_load_store.h: Fix comments.
+ * src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h: Fix
comments.
+ * src/atomic_ops/sysdeps/short_atomic_load_store.h: Fix comments.
+ * src/atomic_ops.c: Fix comments.
+ * src/atomic_ops.h: Fix comments.
+ * src/atomic_ops_stack.c: Fix comments.
+ * src/atomic_ops_stack.h: Fix comments.
+
+2008-10-20 Hans Boehm <address@hidden> (really Andrew Agno)
+ * src/atomic_ops/sysdeps/gcc/x86_64.h (AO_int_fetch_and_add_full):
+ fix return type.
+
2008-08-21 Hans Boehm <address@hidden>
* config.guess, config.sub, configure: Regenerate/replace.
Use autoconf 2.61, automake 1.9.6.
Index: libgc/libatomic_ops-1.2/src/atomic_ops.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops.c 31 Jul 2008 19:54:27 -0000
1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops.c 22 Oct 2008 19:20:24 -0000
1.2
@@ -59,12 +59,12 @@
* Out of line compare-and-swap emulation based on test and set.
*
* We use a small table of locks for different compare_and_swap locations.
- * Before we update perform a compare-and-swap, we grap the corresponding
+ * Before we update perform a compare-and-swap, we grab the corresponding
* lock. Different locations may hash to the same lock, but since we
* never acquire more than one lock at a time, this can't deadlock.
* We explicitly disable signals while we perform this operation.
*
- * FIXME: We should probably also suppport emulation based on Lamport
+ * FIXME: We should probably also support emulation based on Lamport
* locks, since we may not have test_and_set either.
*/
#define AO_HASH_SIZE 16
Index: libgc/libatomic_ops-1.2/src/atomic_ops.h
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops.h 30 Aug 2008 13:57:46 -0000
1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops.h 22 Oct 2008 19:20:25 -0000
1.3
@@ -58,7 +58,7 @@
/* later writes. */
/* _full: Ordered with respect to both earlier and later memops.*/
/* _release_write: Ordered with respect to earlier writes. */
-/* _acquire_read: Ordered with repsect to later reads. */
+/* _acquire_read: Ordered with respect to later reads. */
/* */
/* Currently we try to define the following atomic memory */
/* operations, in combination with the above barriers: */
@@ -122,7 +122,7 @@
/* */
/* The architecture dependent section: */
/* This defines atomic operations that have direct hardware */
-/* support on a particular platform, mostly by uncluding the */
+/* support on a particular platform, mostly by including the */
/* appropriate compiler- and hardware-dependent file. */
/* */
/* The synthesis section: */
@@ -132,7 +132,7 @@
/* We make no attempt to synthesize operations in ways that */
/* effectively introduce locks, except for the debugging/demo */
/* pthread-based implementation at the beginning. A more */
-/* relistic implementation that falls back to locks could be */
+/* realistic implementation that falls back to locks could be */
/* added as a higher layer. But that would sacrifice */
/* usability from signal handlers. */
/* The synthesis section is implemented almost entirely in */
Index: libgc/libatomic_ops-1.2/src/atomic_ops_stack.c
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops_stack.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops_stack.c 31 Jul 2008 19:54:27
-0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops_stack.c 22 Oct 2008 19:20:25
-0000 1.2
@@ -69,7 +69,7 @@
#ifdef AO_USE_ALMOST_LOCK_FREE
/* LIFO linked lists based on compare-and-swap. We need to avoid */
-/* the case of a node deleton and reinsertion while I'm deleting */
+/* the case of a node deletion and reinsertion while I'm deleting */
/* it, since that may cause my CAS to succeed eventhough the next */
/* pointer is now wrong. Our solution is not fully lock-free, but it */
/* is good enough for signal handlers, provided we have a suitably low */
@@ -143,7 +143,7 @@
* I concluded experimentally that checking a value first before
* performing a compare-and-swap is usually beneficial on X86, but
* slows things down appreciably with contention on Itanium.
- * ince the Itanium behavior makes more sense to me (more cache line
+ * Since the Itanium behavior makes more sense to me (more cache line
* movement unless we're mostly reading, but back-off should guard
* against that), we take Itanium as the default. Measurements on
* other multiprocessor architectures would be useful. (On a uniprocessor,
@@ -234,8 +234,8 @@
( &(list -> ptr), next, (AO_t) element));
/* This uses a narrow CAS here, an old optimization suggested */
/* by Treiber. Pop is still safe, since we run into the ABA */
- /* problem only if there were both interveining "pop"s and "push"es.*/
- /* Inthat case we still see a change inthe version number. */
+ /* problem only if there were both intervening "pop"s and "push"es.
*/
+ /* In that case we still see a change in the version number. */
}
AO_t *AO_stack_pop_acquire(AO_stack_t *list)
Index: libgc/libatomic_ops-1.2/src/atomic_ops_stack.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops_stack.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops_stack.h 31 Jul 2008 19:54:27
-0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops_stack.h 22 Oct 2008 19:20:25
-0000 1.2
@@ -94,7 +94,7 @@
volatile AO_t AO_stack_bl[AO_BL_SIZE];
} AO_stack_aux;
-/* The stack implementation knows only about the lecation of */
+/* The stack implementation knows only about the location of */
/* link fields in nodes, and nothing about the rest of the */
/* stack elements. Link fields hold an AO_t, which is not */
/* necessarily a real pointer. This converts the AO_t to a */
Index:
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h
30 Aug 2008 13:57:46 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/aligned_atomic_load_store.h
22 Oct 2008 19:20:26 -0000 1.3
@@ -21,7 +21,7 @@
*/
/*
- * Definitions for architecturs on which loads and stores of AO_t are
+ * Definitions for architectures on which loads and stores of AO_t are
* atomic fo all legal alignments.
*/
Index:
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
---
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h
31 Jul 2008 20:24:32 -0000 1.1
+++
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_aligned_atomic_load_store.h
22 Oct 2008 19:20:27 -0000 1.2
@@ -22,7 +22,8 @@
/*
* Describes architectures on which AO_t, unsigned char, unsigned short,
- * and unsigned int loads and strores are atomic for all normally legal
alignments.
+ * and unsigned int loads and stores are atomic for all normally legal
+ * alignments.
*/
#include "aligned_atomic_load_store.h"
#include "char_atomic_load_store.h"
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h
31 Jul 2008 19:54:29 -0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/all_atomic_load_store.h
22 Oct 2008 19:20:27 -0000 1.2
@@ -22,7 +22,7 @@
/*
* Describes architectures on which AO_t, unsigned char, unsigned short,
- * and unsigned int loads and strores are atomic for all normally legal
+ * and unsigned int loads and stores are atomic for all normally legal
* alignments.
*/
#include "atomic_load_store.h"
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h 30 Aug
2008 13:57:46 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/atomic_load_store.h 22 Oct
2008 19:20:28 -0000 1.3
@@ -21,8 +21,8 @@
*/
/*
- * Definitions for architecturs on which loads and stores of AO_t are
- * atomic fo all legal alignments.
+ * Definitions for architectures on which loads and stores of AO_t are
+ * atomic for all legal alignments.
*/
AO_INLINE AO_t
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h
30 Aug 2008 13:57:46 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/char_atomic_load_store.h
22 Oct 2008 19:20:28 -0000 1.3
@@ -21,7 +21,7 @@
*/
/*
- * Definitions for architecturs on which loads and stores of unsigned char are
+ * Definitions for architectures on which loads and stores of unsigned char are
* atomic for all legal alignments.
*/
Index:
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
---
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h
30 Aug 2008 13:57:46 -0000 1.2
+++
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_aligned_atomic_load_store.h
22 Oct 2008 19:20:29 -0000 1.3
@@ -21,8 +21,8 @@
*/
/*
- * Definitions for architecturs on which loads and stores of unsigned int are
- * atomic fo all legal alignments.
+ * Definitions for architectures on which loads and stores of unsigned int are
+ * atomic for all legal alignments.
*/
AO_INLINE unsigned int
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h
30 Aug 2008 13:57:46 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/int_atomic_load_store.h
22 Oct 2008 19:20:29 -0000 1.3
@@ -21,7 +21,7 @@
*/
/*
- * Definitions for architecturs on which loads and stores of unsigned int are
+ * Definitions for architectures on which loads and stores of unsigned int are
* atomic for all legal alignments.
*/
Index:
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
---
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h
30 Aug 2008 13:57:47 -0000 1.2
+++
libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_aligned_atomic_load_store.h
22 Oct 2008 19:20:29 -0000 1.3
@@ -21,8 +21,8 @@
*/
/*
- * Definitions for architecturs on which loads and stores of unsigned short are
- * atomic fo all legal alignments.
+ * Definitions for architectures on which loads and stores of unsigned short
+ * are atomic for all legal alignments.
*/
AO_INLINE unsigned short
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h
30 Aug 2008 13:57:47 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/short_atomic_load_store.h
22 Oct 2008 19:20:29 -0000 1.3
@@ -21,8 +21,8 @@
*/
/*
- * Definitions for architecturs on which loads and stores of unsigned short are
- * atomic for all legal alignments.
+ * Definitions for architectures on which loads and stores of unsigned short
+ * are atomic for all legal alignments.
*/
AO_INLINE unsigned short
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -b -r1.2 -r1.3
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h 30 Aug 2008
13:57:47 -0000 1.2
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/arm.h 22 Oct 2008
19:20:30 -0000 1.3
@@ -236,7 +236,7 @@
/* to be stored. Both registers must be different from addr. */
/* Make the address operand an early clobber output so it */
/* doesn't overlap with the other operands. The early clobber*/
- /* on oldval is neccessary to prevent the compiler allocating */
+ /* on oldval is necessary to prevent the compiler allocating */
/* them to the same register if they are both unused. */
__asm__ __volatile__("swp %0, %2, [%3]"
: "=&r"(oldval), "=&r"(addr)
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h 31 Jul 2008
19:54:33 -0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86.h 22 Oct 2008
19:20:30 -0000 1.2
@@ -143,7 +143,7 @@
char result;
#if __PIC__
/* If PIC is turned on, we can't use %ebx as it is reserved for the
- GOT poiner. We can save and restore %ebx because GCC won't be
+ GOT pointer. We can save and restore %ebx because GCC won't be
using it for anything else (such as any of the m operands) */
__asm__ __volatile__("pushl %%ebx;" /* save ebx used for PIC GOT ptr */
"movl %6,%%ebx;" /* move new_val2 to %ebx */
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h 31 Jul 2008
19:54:33 -0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/gcc/x86_64.h 22 Oct 2008
19:20:30 -0000 1.2
@@ -96,7 +96,7 @@
#define AO_HAVE_short_fetch_and_add_full
-AO_INLINE unsigned short
+AO_INLINE unsigned int
AO_int_fetch_and_add_full (volatile unsigned int *p, unsigned int incr)
{
unsigned int result;
@@ -174,7 +174,7 @@
#else
/* this one provides spinlock based emulation of CAS implemented in */
/* atomic_ops.c. We probably do not want to do this here, since it is */
-/* not attomic with respect to other kinds of updates of *addr. On the */
+/* not atomic with respect to other kinds of updates of *addr. On the */
/* other hand, this may be a useful facility on occasion. */
#ifdef AO_WEAK_DOUBLE_CAS_EMULATION
int AO_compare_double_and_swap_double_emulation(volatile AO_double_t *addr,
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h 31 Jul 2008
19:54:33 -0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/hppa.h 22 Oct 2008
19:20:30 -0000 1.2
@@ -19,7 +19,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE
* SOFTWARE.
*
- * Derived from the corresponsing header file for gcc.
+ * Derived from the corresponding header file for gcc.
*
*/
Index: libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h
===================================================================
RCS file:
/cvsroot/dotgnu-pnet/pnet/libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h 31 Jul 2008
19:54:34 -0000 1.1
+++ libgc/libatomic_ops-1.2/src/atomic_ops/sysdeps/hpc/ia64.h 22 Oct 2008
19:20:31 -0000 1.2
@@ -22,7 +22,7 @@
/*
* This file specifies Itanimum primitives for use with the HP compiler
- * unde HP/UX. We use intrinsics instead of the inline assembly code in the
+ * under HP/UX. We use intrinsics instead of the inline assembly code in the
* gcc file.
*/
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [dotgnu-pnet-commits] pnet ChangeLog libgc/ChangeLog libgc/alloc.c li...,
Klaus Treichel <=