Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

This branch is 21 commits ahead, 13390 commits behind mono:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

..
Failed to load latest commit information.
Mac_files
cord
doc
include
m4
.gitattributes
.gitignore
AmigaOS.c
BCC_MAKEFILE
ChangeLog
EMX_MAKEFILE
MacOS.c
MacProjects.sit.hqx
Makefile.DLLs
Makefile.am
Makefile.direct
Makefile.dj
NT_MAKEFILE
NT_STATIC_THREADS_MAKEFILE
NT_THREADS_MAKEFILE
OS2_MAKEFILE
PCR-Makefile
README.Mono
README.QUICK
SMakefile.amiga
WCC_MAKEFILE
acinclude.m4
add_gc_prefix.c
aix_irix_threads.c
allchblk.c
alloc.c
alpha_mach_dep.S
autogen.sh
backgraph.c
blacklst.c
callprocs
checksums.c
configure.host
configure.in
darwin_stop_world.c
dbg_mlc.c
depcomp
digimars.mak
dyn_load.c
finalize.c
gc.mak
gc_cpp.cc
gc_cpp.cpp
gc_dlopen.c
gcc_support.c
gcj_mlc.c
gcname.c
headers.c
hpux_test_and_clear.s
ia64_save_regs_in_stack.s
if_mach.c
if_not_there.c
install-sh
irix_threads.c
libgc.log
ltconfig
mach_dep.c
malloc.c
mallocx.c
mark.c
mark_rts.c
mips_sgi_mach_dep.s
mips_ultrix_mach_dep.s
misc.c
missing
mkinstalldirs
new_hblk.c
obj_map.c
openbsd_stop_world.c
os_dep.c
pc_excludes
pcr_interface.c
powerpc_darwin_mach_dep.s
powerpc_macosx_mach_dep.s
pthread_stop_world.c
pthread_support.c
ptr_chck.c
real_malloc.c
reclaim.c
rs6000_mach_dep.s
setjmp_t.c
solaris_pthreads.c
solaris_threads.c
sparc_mach_dep.S
sparc_netbsd_mach_dep.s
sparc_sunos4_mach_dep.s
specific.c
stubborn.c
threadlibs.c
typd_mlc.c
version.h
win32_threads.c

README.Mono

This is a modified version of Boehm GC 6.1 for Mono.

* There are two main changes to the upstream version:

  - Makefile changes:

    libgc has a lot of configurable options which are AC_DEFINE()d in its
    configure.in.  To make it easier to build and bundle it with Mono, I
    replaced most of the orignal configure.in and the makefiles with custom
    versions which just define what we actually need for Mono.

    This means that you can just run configure in this directory and it'll
    do the right thing.  Later on, we'll just include this package in Mono
    and use AC_CONFIG_SUBDIRS().

  - Threading changes

    The original libgc has several *_threads.c files for each possible threading
    implementation.

    For Mono, we're using a vtable

        typedef struct
        {
                void (* initialize) (void);
                void (* lock) (void);
                void (* unlock) (void);
                void (* stop_world) (void);
                void (* push_thread_structures) (void);
                void (* push_all_stacks) (void);
                void (* start_world) (void);
        } GCThreadFunctions;

        extern GCThreadFunctions *gc_thread_vtable;

    and a mono_threads.c file.

  - Deleted files

    Some files from the original distribution have been deleted in this version.
    These are files which weren't actually linked into the library so they were not
    needed.  When importing a new upstream version, you can either keep them removed
    or just replace them with their new upstream versions.

  - include/private/gc_locks.h

    This file has been replaced with a custom version.

    When importing a new upstream version, keep this custom version, ie. don't import the
    new upstream gc_locks.h.

* Importing a new upstream version

  This is really simple.  Just import the new version to the vendor branch (LIBGC) in CVS
  and then merge it into the main trunk.

  To get a diff to the original version:

        cvs diff -u -r LIBGC

  When importing new upstream versions, don't import the new configure.in or any of the
  Makefile.am's; they've been replaced by custom versions.  Just import all the new source
  files and it should be fine.


April 4th, 2003
Martin Baulig <martin@ximian.com>
Something went wrong with that request. Please try again.