]> git.llucax.com Git - software/dgc/cdgc.git/log
software/dgc/cdgc.git
14 years agoMake the GC configurable at runtime via env vars
Leandro Lucarella [Mon, 19 Jul 2010 16:24:30 +0000 (13:24 -0300)]
Make the GC configurable at runtime via env vars

The GC offers a couple of options to debug memory problems, but they are
selectable only at compile-time. Being the GC part of the compiler
runtime, is not very common for the user to recompile the GC when it has
a memory problem, so making this option available always is very
desirable.

This patch allows configuring the GC via environment variables. 4 options
are available: sentinel, mem_stomp, verbose and log file. Only the first
2 are implemented right now.

For example, to check a program using memory stomping and a sentinel, you
can run it like this (using sh):

$ D_GC_OPTS=mem_stop=1:sentinel

As you can see, the value is optional for boolean options.

14 years agoCall memset() only for large enough chunks of data
Leandro Lucarella [Sat, 3 Jul 2010 02:31:57 +0000 (23:31 -0300)]
Call memset() only for large enough chunks of data

Calling memset() for small memory chunks can be expensive compared to
a simple loop.

14 years agoUse a DynArray to store the memory pools
Leandro Lucarella [Wed, 30 Jun 2010 13:58:46 +0000 (10:58 -0300)]
Use a DynArray to store the memory pools

14 years agoUse a few more initial elements by default
Leandro Lucarella [Wed, 30 Jun 2010 13:58:20 +0000 (10:58 -0300)]
Use a few more initial elements by default

Moving from 4 to 16 can improve the performance a little for short lived
programs.

14 years agoUse a custom dynamic array to store roots and ranges
Leandro Lucarella [Wed, 30 Jun 2010 13:57:18 +0000 (10:57 -0300)]
Use a custom dynamic array to store roots and ranges

14 years agoRemove Gcx destructor
Leandro Lucarella [Tue, 29 Jun 2010 00:09:55 +0000 (21:09 -0300)]
Remove Gcx destructor

There is no point on freeing memory as the OS will do it for us.

14 years agoComment why we avoid calling free with null
Leandro Lucarella [Tue, 22 Jun 2010 03:39:50 +0000 (00:39 -0300)]
Comment why we avoid calling free with null

Even when free() can be called with a null pointer, the extra call might
be significant. On hard GC benchmarks making the test for null in the GC
code (i.e. avoiding the free() call) can reduce the GC time by almost ~5%.

14 years agoRemove debug LOGGING code
Leandro Lucarella [Mon, 21 Jun 2010 23:13:51 +0000 (20:13 -0300)]
Remove debug LOGGING code

This code will be superseded by the statistic collection code, and it was
unmantained and very probably broken (for example, the file and line
number was never filled in).

14 years agoAdd VIM modeline to avoid style errors
Leandro Lucarella [Wed, 9 Jun 2010 22:48:51 +0000 (19:48 -0300)]
Add VIM modeline to avoid style errors

14 years agoUse tango bindings to C standard library functions
Leandro Lucarella [Wed, 9 Jun 2010 22:41:47 +0000 (19:41 -0300)]
Use tango bindings to C standard library functions

As we need to use more libraries it became less practical to maintain our
own set of bindings, and since the GC only works with Tango, it makes
sense to just use Tango bindings.

14 years agoRemove PRINTF debug statements
Leandro Lucarella [Sun, 30 May 2010 23:13:06 +0000 (20:13 -0300)]
Remove PRINTF debug statements

14 years agoFix minor coding style issues
Leandro Lucarella [Sun, 30 May 2010 01:45:06 +0000 (22:45 -0300)]
Fix minor coding style issues

14 years agoUse more explicit imports
Leandro Lucarella [Sun, 30 May 2010 01:44:49 +0000 (22:44 -0300)]
Use more explicit imports

14 years agoAdd missing import for DMD
Leandro Lucarella [Sat, 29 May 2010 23:21:30 +0000 (20:21 -0300)]
Add missing import for DMD

14 years agoMove the modules to package rt.gc.cdgc
Leandro Lucarella [Sat, 29 May 2010 23:11:07 +0000 (20:11 -0300)]
Move the modules to package rt.gc.cdgc

Tango 0.99.9 uses this package scheme, so we follow it for easier
integration.

14 years agoMinor formatting fixes
Leandro Lucarella [Sat, 29 May 2010 23:02:24 +0000 (20:02 -0300)]
Minor formatting fixes

14 years agoAdd weak reference support for Tango 0.99.9
Leandro Lucarella [Sat, 29 May 2010 22:54:04 +0000 (19:54 -0300)]
Add weak reference support for Tango 0.99.9

14 years agoRemove the MULTI_THREADED version
Leandro Lucarella [Thu, 21 Jan 2010 02:38:38 +0000 (23:38 -0300)]
Remove the MULTI_THREADED version

This will be an inherently concurrent GC, so having a non-threaded version
of it makes no sense. Even more, I think the non-threaded doesn't even
compile.

14 years agoRemove (un)committed pages distinction
Leandro Lucarella [Sun, 17 Jan 2010 21:29:52 +0000 (18:29 -0300)]
Remove (un)committed pages distinction

This distinction is only made by Windows, and adds an extra complexity
that probably doesn't worth it (specially for other OSs, where this adds
a little overhead too, in both space and time).

Other OSs (like Linux) even do all the committing automatically, under the
hood, see:
http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;\
f=Documentation/vm/overcommit-accounting;hb=HEAD

14 years agoMake allocation functions that can fail return bool
Leandro Lucarella [Sun, 17 Jan 2010 00:48:12 +0000 (21:48 -0300)]
Make allocation functions that can fail return bool

There is no point on returning int, since no error code is returned, just
failure or success.

14 years agoFix spacing style
Leandro Lucarella [Sun, 17 Jan 2010 00:14:07 +0000 (21:14 -0300)]
Fix spacing style

14 years agoDeclare public allocation API
Leandro Lucarella [Sun, 17 Jan 2010 00:01:04 +0000 (21:01 -0300)]
Declare public allocation API

Declare the public API and move comments to the declaration, to avoid
duplication and let ddoc document the functions for all versions.

14 years agoRemove valloc() allocation method
Leandro Lucarella [Sat, 16 Jan 2010 23:45:22 +0000 (20:45 -0300)]
Remove valloc() allocation method

Almost any system that support valloc() supports mmap(), and being
a deprecated function, it makes not much sense to maintain it as an
allocation method.

14 years agoMake sure MAP_ANON exists when using mmap()
Leandro Lucarella [Sat, 16 Jan 2010 23:43:54 +0000 (20:43 -0300)]
Make sure MAP_ANON exists when using mmap()

14 years agoRemove commented out code
Leandro Lucarella [Sat, 16 Jan 2010 23:40:15 +0000 (20:40 -0300)]
Remove commented out code

14 years agoRemove Tango dependency
Leandro Lucarella [Sat, 16 Jan 2010 00:29:31 +0000 (21:29 -0300)]
Remove Tango dependency

To avoid Tango dependency, we need to write our own C-API interface. This
is done in the new gc.libc module. In the future, maybe this module will
use Tango or Phobos accordly, but for now we stay free of dependencies (at
the expense of some extra work).

14 years agoRemove debug version THREADINVARIANT
Leandro Lucarella [Sat, 16 Jan 2010 00:34:25 +0000 (21:34 -0300)]
Remove debug version THREADINVARIANT

The code seemed to be broken, since the self thread ID was stored at
initialization and then asserted that the GC always run from that thread,
which seems far from reality (the GC can be invoked by any thread).

The PRINTF version now doesn't print the current thread ID either.

14 years agoRename module names to make more sense
Leandro Lucarella [Thu, 14 Jan 2010 02:29:33 +0000 (23:29 -0300)]
Rename module names to make more sense

14 years agoMake gc a package
Leandro Lucarella [Sun, 3 Jan 2010 18:20:21 +0000 (15:20 -0300)]
Make gc a package

14 years agoAdd a "clean" target to the Makefile
Leandro Lucarella [Thu, 24 Dec 2009 23:22:19 +0000 (20:22 -0300)]
Add a "clean" target to the Makefile

14 years agoPut built stuff in a separated build directory
Leandro Lucarella [Thu, 24 Dec 2009 23:20:57 +0000 (20:20 -0300)]
Put built stuff in a separated build directory

14 years agoAdd a wrapper script to run programs using CDGC
Leandro Lucarella [Thu, 24 Dec 2009 23:16:01 +0000 (20:16 -0300)]
Add a wrapper script to run programs using CDGC

14 years agoRemove redundant "private" from import statements
Leandro Lucarella [Thu, 24 Dec 2009 23:10:28 +0000 (20:10 -0300)]
Remove redundant "private" from import statements

Since a long while ago, imports are "private" by default.

14 years agoConcurrent D Garbage Collector initial commit
Leandro Lucarella [Thu, 24 Dec 2009 22:56:49 +0000 (19:56 -0300)]
Concurrent D Garbage Collector initial commit

The Concurrent D Garbage Collector (CDGC) is based on the "basic" garbage
collector from the Tango runtime. This first commit is a copy of this GC,
as it is in Tango 0.99.8.

The CDGC is designed only for Linux, at least for now.