harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiao-Feng Li" <xiaofeng...@gmail.com>
Subject Re: [DRLVM][Helper inlining] GC write barrier inline?
Date Tue, 05 Dec 2006 00:24:20 GMT
On 12/4/06, Robin Garner <robin.garner@anu.edu.au> wrote:
> > On 11/30/06, Robin Garner <robin.garner@anu.edu.au> wrote:
> >> Xiao-Feng Li wrote:
> >> >
> >> >        /* If the slot is in NOS or the target is not in NOS, we simply
> >> > return*/
> >> >        if( p_slot.GE( NOS_BOUNDARY) || p_target.LT( NOS_BOUNDARY) )
> >> >            return;
> >> >
> >> >        /* Otherwise, we need remember it in native code. */
> >> >        VMHelper.WriteBarrierSlotRem(p_slot, p_target);
> >>
> >> Shouldn't this be
> >>          if( p_slot.LT( NOS_BOUNDARY) && p_target.GE( NOS_BOUNDARY)
)
> >>            VMHelper.WriteBarrierSlotRem(p_slot, p_target);
> >>
> >> ??  Ie we're recording old-to-new pointers.
> >
> > Robin, aren't they the same but exchanging the two branches of
> > condition checking? :-)
>
> Yes, of course.  Doh.  !(A|B) = !A&!B.
>
> I do think the second is clearer though :)

Since I somehow am not a branch predictor fun, I am used to put the
common TRUE case in the branch condition so that the fast path can be
scheduled as fall-through branch automatically by the JIT. This might
be very old and obsolete C programming wisdom. :-)

> > Thanks,
> > xiaofeng
> >
> >>
> >>
> >> --
> >> Robin Garner
> >> Dept. of Computer Science
> >> Australian National University
> >> http://cs.anu.edu.au/people/Robin.Garner/
> >>
> >
>
>
>

Mime
View raw message