]> granicus.if.org Git - gc/commitdiff
2008-05-30 Hans Boehm <Hans.Boehm@hp.com> (some really dmcmahill)
authorhboehm <hboehm>
Sat, 31 May 2008 00:40:00 +0000 (00:40 +0000)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 26 Jul 2011 17:06:43 +0000 (21:06 +0400)
* configure.ac: SPARC fixes.
* configure: Regenerate.
* thread_local_alloc.c(GC_mark_thread_local_fls_for): Include
size 0, except for gcj.
* doc/gc.man: Expand C++ cautions.
* include/gc_inline.h: Fix comments.

ChangeLog
configure
configure.ac
doc/gc.man
include/gc_inline.h
thread_local_alloc.c

index 75fe3548dbbe389be30cba2cca9c245ac3a61f4c..918e860b7a86b87d9ddb78dcac5eada8cf0db8f6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-05-30  Hans Boehm <Hans.Boehm@hp.com> (some really dmcmahill)
+
+       * configure.ac: SPARC fixes.
+       * configure: Regenerate.
+       * thread_local_alloc.c(GC_mark_thread_local_fls_for): Include
+       size 0, except for gcj.
+       * doc/gc.man: Expand C++ cautions.
+       * include/gc_inline.h: Fix comments.
+
 2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
        
        * include/gc_version.h, configure.ac, doc/README:
index 8acc36b68e79777236c30c3b6a9205e4cd2be2a0..523eb2b115a64d8804cdb8914b252be8e2905e73 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 1.36 .
+# From configure.ac Revision: 1.37 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.61 for gc 7.2alpha1.
 #
@@ -6161,6 +6161,9 @@ _ACEOF
  sparc-*-netbsd*)
     machdep="mach_dep.lo sparc_netbsd_mach_dep.lo"
     ;;
+ sparc64-*-netbsd*)
+    machdep="mach_dep.lo sparc_mach_dep.lo"
+    ;;
  sparc-sun-solaris2.3)
     machdep="mach_dep.lo sparc_mach_dep.lo"
     cat >>confdefs.h <<\_ACEOF
@@ -6168,7 +6171,7 @@ _ACEOF
 _ACEOF
 
     ;;
- sparc*-sun-solaris2.*)
+ sparc*-sun-solaris2*)
     machdep="mach_dep.lo sparc_mach_dep.lo"
     ;;
  ia64-*-*)
@@ -6872,7 +6875,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6875 "configure"' > conftest.$ac_ext
+  echo '#line 6878 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -9135,11 +9138,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9138: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9141: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:9142: \$? = $ac_status" >&5
+   echo "$as_me:9145: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -9403,11 +9406,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9406: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9409: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:9410: \$? = $ac_status" >&5
+   echo "$as_me:9413: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -9507,11 +9510,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:9510: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9513: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:9514: \$? = $ac_status" >&5
+   echo "$as_me:9517: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -11815,7 +11818,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 11818 "configure"
+#line 11821 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11915,7 +11918,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 11918 "configure"
+#line 11921 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -14255,11 +14258,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14258: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14261: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:14262: \$? = $ac_status" >&5
+   echo "$as_me:14265: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -14359,11 +14362,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14362: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:14365: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:14366: \$? = $ac_status" >&5
+   echo "$as_me:14369: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15929,11 +15932,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15932: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15935: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15936: \$? = $ac_status" >&5
+   echo "$as_me:15939: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16033,11 +16036,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16036: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16039: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16040: \$? = $ac_status" >&5
+   echo "$as_me:16043: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -18235,11 +18238,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18238: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18241: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:18242: \$? = $ac_status" >&5
+   echo "$as_me:18245: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -18503,11 +18506,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18506: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18509: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:18510: \$? = $ac_status" >&5
+   echo "$as_me:18513: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -18607,11 +18610,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:18610: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:18613: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:18614: \$? = $ac_status" >&5
+   echo "$as_me:18617: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
index dd99358b6c7a3b921635ac16806c94c74f4b373a..b9b2d5c461326cf60db246c96fd767ff49fd0dcd 100644 (file)
@@ -22,7 +22,7 @@ AC_INIT(gc,7.2alpha1,Hans.Boehm@hp.com)
 AC_CONFIG_SRCDIR(gcj_mlc.c)
 AC_CANONICAL_TARGET 
 AC_PREREQ(2.53)
-AC_REVISION($Revision: 1.37 $)
+AC_REVISION($Revision: 1.38 $)
 GC_SET_VERSION
 AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects nostdinc])
 AM_MAINTAINER_MODE
@@ -405,11 +405,14 @@ case "$host" in
  sparc-*-netbsd*)
     machdep="mach_dep.lo sparc_netbsd_mach_dep.lo"
     ;;
+ sparc64-*-netbsd*)
+    machdep="mach_dep.lo sparc_mach_dep.lo"
+    ;;
  sparc-sun-solaris2.3)
     machdep="mach_dep.lo sparc_mach_dep.lo"
     AC_DEFINE(SUNOS53_SHARED_LIB)
     ;;
- sparc*-sun-solaris2.*)
+ sparc*-sun-solaris2*)
     machdep="mach_dep.lo sparc_mach_dep.lo"
     ;;
  ia64-*-*)
index 2a550c71247e399ddbd36137a3aad57e9e915d7c..109aca6cf795bb2ff7f0afac6fb9714eacf0d319 100644 (file)
@@ -30,7 +30,13 @@ instead of calling GC_malloc and friends directly.  This allows debugging
 versions of the routines to be substituted by defining GC_DEBUG before
 including gc.h.
 .LP
-See the documentation in the include file gc_cpp.h for an alternate, C++ specific interface to the garbage collector.
+See the documentation in the include files gc_cpp.h and gc_allocator.h,
+as well as the gcinterface.html file in the distribution,
+for an alternate, C++ specific interface to the garbage collector.
+Note that C++ programs generally
+need to be careful to ensure that all allocated memory (whether via new,
+malloc, or STL allocators) that may point to garbage collected memory
+is either itself garbage collected, or at least traced by the collector.
 .LP
 Unlike the standard implementations of malloc,
 .I
index ffc5b3ea1ccc8ad6119dfaae818c50d6ffc5d3a9..2aa314b3527e926a56cd6efebac4691293e4dee7 100644 (file)
  * modified is included with the above copyright notice.
  */
  
-/* USE OF THIS FILE IS NOT RECOMMENDED unless GC_all_interior_pointers */
-/* is not set, or the collector has been built with                    */
-/* -DDONT_ADD_BYTE_AT_END, or the specified size includes a pointerfree        */
-/* word at the end.  In the standard collector configuration,          */
-/* the final word of each object may not be scanned.                   */
+/* WARNING:                                                            */
+/* Note that for these routines, it is the clients responsibility to   */
+/* add the extra byte at the end to deal with one-past-the-end pointers.*/
+/* In the standard collector configuration, the collector assumes that */
+/* such a byte has been added, and hence does not trace the last word  */
+/* in the resulting object.                                            */
+/* This is not an issue if the collector is compiled with              */
+/* -DDONT_ADD_BYTE_AT_END, or if GC_all_interior_pointers is not set.  */
 /* This interface is most useful for compilers that generate C.                */
-/* It is also used internally for thread-local allocation, in which    */
-/* case, the size is suitably adjusted by the caller.                  */
+/* It is also used internally for thread-local allocation.             */
 /* Manual use is hereby discouraged.                                   */
 
 #include "gc.h"
@@ -45,6 +47,8 @@
 /* directly using gmalloc before putting multiple objects into the     */
 /* tiny_fl entry.  If num_direct is zero, then the free lists may also */
 /* be initialized to (void *)0.                                                */
+/* Note that we use the zeroth free list to hold objects 1 granule in  */
+/* size that are used to satisfy size 0 allocation requests.           */
 /* We rely on much of this hopefully getting optimized away in the     */
 /* num_direct = 0 case.                                                        */
 /* Particularly if granules is constant, this should generate a small  */
index 598817501b0b69762a4375b9325d6081fefb10f4..d18cd88bfed34a62cec05fa8042f37dcb3b1fbe0 100644 (file)
@@ -291,14 +291,16 @@ void GC_mark_thread_local_fls_for(GC_tlfs p)
     ptr_t q;
     int j;
     
-    for (j = 1; j < TINY_FREELISTS; ++j) {
+    for (j = 0; j < TINY_FREELISTS; ++j) {
       q = p -> ptrfree_freelists[j];
       if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
       q = p -> normal_freelists[j];
       if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
 #     ifdef GC_GCJ_SUPPORT
-        q = p -> gcj_freelists[j];
-        if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
+       if (j > 0) {
+          q = p -> gcj_freelists[j];
+          if ((word)q > HBLKSIZE) GC_set_fl_marks(q);
+       }
 #     endif /* GC_GCJ_SUPPORT */
     }
 }