(2013/04/29 11:45), SASADA Koichi wrote:
> (2013/04/29 2:19), Magnus Holm wrote:
>> What exactly does "moving memory areas" mean? Do you have any links?
> 
> This is pseudo code:
> ary_push(VALUE ary, VALUE item)
> {
>   old_size = RARRA_LEN(ary);
>   realloc(RARRAY_PTR(ary),  old_size + 1); <- change memory area
>   RARRAY_PTR(ary)[old_size] = item;
>   RARRAY_SET_LEN(ary) = old_size + 1;
> }

Sorry, I assume only *parallel* tracing.
(a tracing thread and a mutator thread conflict (GVL protected), for
example, above code)

But concurrent, realtime GC can be implemented (not parallel,
synchronizing a tracing thread and a mutator thread).

-- 
// SASADA Koichi at atdot dot net