harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Weldon Washburn" <weldon...@gmail.com>
Subject Re: [DRLVM][JIT] can Jitrino.JET call MMTk alloc() instead of C helper?
Date Thu, 07 Sep 2006 13:23:14 GMT
Mikhail,

Thanks.  Please put the mods in JIRA  Harmony-816.  Thanks for pointing out
the other drlvm threads.  It turns out that even though these java threads
are running,  the MMTk "user mode" setup that has been created for
initial integration only sees one single java thread.

At some point soon we need to go multithread.  When can you fix the vmmagic
atomic operations?

   Thanks
       Weldon




On 9/7/06, Mikhail Fursov <mike.fursov@gmail.com> wrote:
>
> Weldon,
> the problem is clear. I going to add the support to JET in a day.
>
> + Note that even for a simple single method HelloWorld application DRLVM
> starts multiple threads to support finalization. Also some threads may be
> created by API itself (but I'm not sure it does). So, at least, you need
> to
> disable finalizer threads with -Dvm.finalize=false property.
>
>
> On 9/6/06, Weldon Washburn <weldonwjw@gmail.com> wrote:
> >
> > On 9/6/06, Mikhail Fursov <mike.fursov@gmail.com> wrote:
> > >
> > > Weldon,
> > > The replacement of the 'new' opcode call with another call is
> relatively
> > > easy task.
> > >
> > > To send a working patch I need the following information:
> > > 1) Which Java method to call? Is it an instance method or a static?
> >
> >
> > Its an instance method.  Ideally you can use the same approach as the
> one
> > used when adding write barriers to Jitrino.JET.  Specifically
> > PlanLocal.javain Jira Harmony-816.  The API is:
> >
> > public Address alloc(int bytes, int align, int offset, int allocator,
> int
> > site);
> >
> > The only parameter I care about at this time is bytes.  This must  be
> > accurate.  I will ignore the rest of the parameters.  In other words, to
> > allocate a 52 byte object, the call site should look like:
> >
> > alloc( 52, 0, 0, 0, 0);
> >
> > Make sure the JIT loads the vtable ptr (and array length if required).
> >
> > 2) How to test the implementation? I can get and deploy all of your
> > changes
> > > or just to call some stub methods in a specialized testcase before
> > sending
> > > the result to you.
> >
> >
> >
> > It would be best to test with a stub that is similar to what's in
> > Harmony-816.  It would also be great if the object allocator can chosen
> by
> > pattern matching on the method name.  A similar facility already exists
> > for
> > the write barrier -- it might be a simple cut/paste.
> >
> > The above will work fine during the single thread stage of this project.
> > Once we decide to turn on multiple Java threads, we will need to stuff a
> > thread specific MMTk object in DRLVM's thread block.  Then during
> > execution
> > of JITed code, use vmmagic to load fs:14+offset_of_the_alloc_object
> into,
> > for example, EBX.  Do a "mov eax, [ebx]" to get the vtable pointer into
> > eax.  And finally, "call [eax + offset_of_the_alloc_method].
> >
> > Let me know if you have further questions.
> >
> >
> >
> > ?
> > >
> > >
> > > On 9/6/06, Weldon Washburn <weldonwjw@gmail.com> wrote:
> > > >
> > > > A question for Jitrino.JET developers.  How hard would it be to
> modify
> > > the
> > > > existing Jitrino.JET code  so that the "new" opcode calls MMTk
> > alloc()?
> > > >
> > > > Thanks
> > > > --
> > > > Weldon Washburn
> > > > Intel Middleware Products Division
> > > >
> > > >
> > >
> > >
> > > --
> > > Mikhail Fursov
> > >
> > >
> >
> >
> > --
> > Weldon Washburn
> > Intel Middleware Products Division
> >
> >
>
>
> --
> Mikhail Fursov
>
>


-- 
Weldon Washburn
Intel Middleware Products Division

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message