Xiao-Feng,
I have finished all inlining tasks planned for this week and now can start
WB inlining task.
I'm going to use your patch with allocation helper as basis (
http://issues.apache.org/jira/browse/HARMONY-2398), and I will be able to
post my patch (get the diff) only after H2398 is applied.

I hope I'll WB in a day or two. The only thing I need to know: what is the
state of gc_gen? Which specs does it run? What can I use to test stability
and performance of my changes?



On 12/5/06, Ivan Volosyuk <[EMAIL PROTECTED]> wrote:

On 12/5/06, Xiao-Feng Li <[EMAIL PROTECTED]> wrote:
> On 12/4/06, Robin Garner <[EMAIL PROTECTED]> wrote:
> > > On 11/30/06, Robin Garner <[EMAIL PROTECTED]> 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. :-)

Actually, in modern compilers this may not work. I like approach used
in linux kernel:

  if (unlikely(expr)) {
  }

where 'unlikely' is highly compiler specific and defined something like:

#define likely(x)       __builtin_expect(!!(x), 1)
#define unlikely(x)     __builtin_expect(!!(x), 0)

--
Ivan




--
Mikhail Fursov

Reply via email to