develooper Front page | perl.perl6.internals | Postings from July 2008

Re: [svn:parrot] r29664 - branches/gsoc_pdd09/src/gc

From:
chromatic
Date:
July 23, 2008 06:31
Subject:
Re: [svn:parrot] r29664 - branches/gsoc_pdd09/src/gc
Message ID:
200807230015.50826.chromatic@wgz.org
On Monday 21 July 2008 18:38:55 Whiteknight@cvs.perl.org wrote:
> --- branches/gsoc_pdd09/src/gc/gc_it.c  (original)
> +++ branches/gsoc_pdd09/src/gc/gc_it.c  Mon Jul 21 18:38:55 2008
> @@ -239,6 +239,11 @@
>  {
>      const Arenas * const arena_base   = interp->arena_base;
>      Gc_it_data   * const gc_priv_data = (Gc_it_data
> *)(arena_base->gc_private); +    const UINTVAL gc_trace = flags &
> (GC_trace_normal | GC_trace_stack_FLAG); +    const UINTVAL gc_stack =
> flags & GC_trace_stack_FLAG;
> +    const UINTVAL gc_lazy  = flags & GC_lazy_FLAG;
> +    const UINTVAL gc_volatile = flags & GC_no_trace_volatile_roots;
> +
>  
>      if (flags & GC_finish_FLAG) {
>  
> @@ -278,7 +283,12 @@
>          case GC_IT_MARK_ROOTS:
>              if (Parrot_is_blocked_GC_mark(interp))
>                  break;
> -            Parrot_dod_trace_root(interp, 1);
> +            if (gc_trace && gc_stack)
> +                Parrot_dod_trace_root(interp, 1);
> +            else if (gc_stack)
> +                Parrot_dod_trace_root(interp, 2);
> +            else if (gc_trace)
> +                Parrot_dod_trace_root(interp, 0);
>              gc_priv_data->state = GC_IT_RESUME_MARK;
>              GC_IT_BREAK_AFTER_2;

That looks like a good opportunity for some more enumerations, 
GC_TRACE_AND_STACK, GC_TRACE, GC_STACK.  That'd shorten the conditional too.

-- c



nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About