On 9/29/06, Mikhail Fursov <[EMAIL PROTECTED]> wrote:

All,
I finished 'unboxed' package implementation in Jitrino.OPT. The patch is
in
JIRA 1489
The potential problems:
1) We still do not have a test suite.


Hmmm...  I fixed up the vmmagic test suite and gave it back to the owners .
It should be donated to open source soon.

2) Two bugs in Jitrino.OPT CG prevents us from use load/store by offset
operations sometimes. I going to fix both of these bugs on Monday.

Anyway, I think we will be ready to write helpers with 'magics' next week.


Good!  I look forward to seeing vm helpers written in vmmagic.


On 9/22/06, Robin Garner <[EMAIL PROTECTED]> wrote:
>
> > On 9/21/06, Mikhail Fursov <[EMAIL PROTECTED]> wrote:
> >>
> >> Weldon, Robin
> >> thank you for the comments.
> >> There are just a few steps left to do before Jitrino.OPT will have
> >> usable
> >> "unboxed" package implementation.
> >>
> >> Right now I'm working on atomic operations (prepare/attempt pair),
and
> I
> >> do
> >> not completely understand the semantic of the 'prepare' method.
> >> The "prepareXYZ" method looks like a simple load and is not an atomic
> >> operation by itself. Are there any examples that describe these
> >> operations
> >> in details?
> >
> >
> >
> > Robin will correct me if I am wrong.
> >
> > I think the idea is that this is a generic API intended to be used for
> > accessing "compare and swap" facilities on a bunch of different
> hardware.
> > And the actual hardware has different memory models, different CAS
> > semantics, etc.
> >
> > Basically the generic facility needed is to first read the CAS target
> > memory
> > location (this is the "prepare").  If the memory is sitting at a
> specific
> > value (this is the "do something"), then do an "attempt" as follows:
> >
> > old_contents =  CAS(expected_specfic_value_that_I_just_read,
> > some_new_value,
> > target_memory_location)
> >
> > If the old_contents are identical to
> > expected_specific_value_that_I_just_read, we know that the CAS
> succeeded.
> > In other words, you won the competition.  Otherwise you lost.
> >
> > I imagine the following situation in user's code:
> >>
> >> prepareXYZ()
> >> do something
> >> attempt()
> >>
> >> Is this code correct?
> >>
>
> You're correct.
>
> The prepare/attempt was designed to match architectures (PPC, Alpha ...)
> with a load-locked/store-conditional instruction pair.
>
> The standard code fragment for a synchronized update is
>
> do {
>   oldVal = x.prepare();
>   newVal = f(oldVal);
> } while (!x.attempt(oldVal,newVal));
>
> As an aside, vmmagic should probably have CAS as a primitive rather than
> prepare/attempt, but I don't think that's going to happen in the
immediate
> future.
>
> cheers
>
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


--
Mikhail Fursov




--
Weldon Washburn
Intel Middleware Products Division

Reply via email to