On Tuesday, 14 January 2014 at 11:02:38 UTC, Benjamin Thaut wrote:
Am 14.01.2014 11:05, schrieb Walter Bright:
On 1/14/2014 1:18 AM, Benjamin Thaut wrote:
Current D does not allow a moving collector because of the
lack of
compiler
support. It is still not possible to identify all pointers
percicesly,
especially those on the stack. Also when you want to
implement a
semi-space GC
everything _must_ be moveable. Pinning is not an option for a
semi-space GC.
There for current D does not allow the implementation of
semi-space GC
without
some changes to the spec. (E.g. structs / classes containing
unions
_must_
provide a custom scanning function).
This is not true, I've implemented one for Java.
So how do you implement a semi-space GC with pinned objects?
You manage the pinned object in a different list that the
semi-space list?
It's quite often that GCs maintain object inventory with several
methods, for example using semi-space for young object but not
for old objects..