Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-13 Thread Robin Garner
Weldon Washburn wrote: Robin, I did a diff of the mmtk/vm directory. It looks like nothing really changed in the vm interface code which is good. Am I understanding this right?? That sounds about right. And (famous last words) I think the interface will probably remain stable for a

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-13 Thread Salikh Zakirov
Weldon Washburn wrote: I actually stumbled on this bug during bringup. I replaced ...plus(arrayOffset)... with ...plus(12)... Its a hack. But now it looks like I simply set ARRAY_BASE_OFFSET to 12 during clinit. Does this seem right?? By the way, the array base offset may differ

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-13 Thread Mikhail Fursov
On 10/13/06, Salikh Zakirov [EMAIL PROTECTED] wrote: By the way, the array base offset may differ depending on the platform and array type. As as I know, currently on 32 bit platform (ia32) the array base offset is 12 for types of size = 4. Double[] and long[] arrays have array base offset 16.

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-13 Thread Robin Garner
Urgh. In that case the array base offset should be specified in the constructor of an MMType - JikesRVM doesn't have this problem, because the object pointer always points to element 0 of an array irrespective of header sizes and alignment issues (and hence the align and offset parameters to

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-13 Thread Weldon Washburn
Salikh, Good catch! You just saved the MMTk port 20 hours of debugging. Thank you :) On 10/13/06, Salikh Zakirov [EMAIL PROTECTED] wrote: Weldon Washburn wrote: I actually stumbled on this bug during bringup. I replaced ...plus(arrayOffset)... with ...plus(12)... Its a hack. But now

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-12 Thread Weldon Washburn
Robin, This helps a bunch. Thanks! I have downloded http://cs.anu.edu.au/people/Robin.Garner/mmtk-20061012.jar and will move to it now. On 10/11/06, Robin Garner [EMAIL PROTECTED] wrote: Original Message Subject: Re: [DRLVM][JET] write barrier for Java (mmtk) Date: Thu

Re: [Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-12 Thread Weldon Washburn
: Robin, This helps a bunch. Thanks! I have downloded http://cs.anu.edu.au/people/Robin.Garner/mmtk-20061012.jar and will move to it now. On 10/11/06, Robin Garner [EMAIL PROTECTED] wrote: Original Message Subject: Re: [DRLVM][JET] write barrier for Java (mmtk) Date: Thu

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-11 Thread Weldon Washburn
Ooops. I really tangled things up. You are right about how we are supposed to find the Java write barrier method. It is located in Plan.writeBarrier(). Each GC algorithm has a Plan class that overrides the writeBarrier() method. I erroneously thought we could call

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-11 Thread Alex Astapchuk
Weldon, I'm a bit confused what to call finally... The previous WB4J version did a call to org/mmtk/plan/PlanLocal::writeBarrier(). The problem was with getting an instance of PlanLocal. We solved it by adding a stub static method PlanLocal::getPlanLocal() - just for the sake of testing

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-11 Thread Robin Garner
I think you must be looking at a fairly old version of MMTk. writeBarrier is an instance method of a MutatorContext (in org.mmtk.plan). MutatorContext exists to hold unsynchronized thread-local data structures. Particularly relevant to the write barrier, each mutator context has its own

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-11 Thread Weldon Washburn
Robin, Thanks for helping clarify the issues. The MMTk code base we are using is what Steve Blackburn supplied us in mid July. I don't know when it will be suggested we move to a more recent version of MMTk. I suspect a major part of the confusion has been because of working with a code base

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-11 Thread Weldon Washburn
hmm we may have version skew going on here. Mikhail, Robin can we stay with the July 14 (or there abouts) version that Steve Blackburn posted to his web page? On 10/11/06, Mikhail Fursov [EMAIL PROTECTED] wrote: On 10/11/06, Weldon Washburn [EMAIL PROTECTED] wrote: Robin, Thanks for

[Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-11 Thread Robin Garner
Original Message Subject: Re: [DRLVM][JET] write barrier for Java (mmtk) Date: Thu, 12 Oct 2006 11:18:20 +1000 From: Robin Garner [EMAIL PROTECTED] To: harmony-dev@incubator.apache.org References: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED

[Fwd: Re: [DRLVM][JET] write barrier for Java (mmtk)]

2006-10-11 Thread Robin Garner
Original Message Subject: Re: [DRLVM][JET] write barrier for Java (mmtk) Date: Thu, 12 Oct 2006 11:36:33 +1000 From: Robin Garner [EMAIL PROTECTED] To: harmony-dev@incubator.apache.org References: [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-10 Thread Mikhail Fursov
Weldon, I thought about slightly different approach. Why not to write fast-path VM helper like was proposed in the thread [drlvm]Extending... This helper (a static method) can be inlined by JIT without any devirtualization and call any method needed from MMTk or native implementation. So JIT

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-10 Thread Rana Dasgupta
Makes sense, using a standard barrier invocation fastpath. But I assume that the MMTk WB helper that it will call needs to be inlined too. Thanks On 10/10/06, Mikhail Fursov [EMAIL PROTECTED] wrote: Weldon, I thought about slightly different approach. Why not to write fast-path VM helper

Re: [DRLVM][JET] write barrier for Java (mmtk)

2006-10-10 Thread Mikhail Fursov
Yes, we can run the usual inliner after helpers are inlined. The only problem I want to notice is that once we have different helpers for different GCs it's a bad idea to use virtual method calls in performance sensitive helpers. You are allowed to do it, but the better solution is to teach the