From: Stephen E S. <ste...@us...> - 2001-12-21 19:14:20
|
Hi Hezi, I think we need to distinguish between when we generate the code for the barrier, ex., for some method foo that is doing a putfield to store a reference at some offset in an object, and when the generated barrier code executes. During compilation we can yield and do GC at any time, we are just generating an array of ints or bytes. When the barrier executes, then we should be concerned about when the executing code might yield, and allow GC to happen. The existing baseline barrier implementation, as discussed recently, is to call a method to implement the barrier (for ex. to put a reference to the about to be modified modified object into a bufffer), and then return to "normal" code which will actually do the store. Now one might be concerned if we yield on the return form this barrier method, after we have recorded an entry in the write buffer, but before actually doing the store. GC could occur, after the GC the store occurs and will not be recorded. I think we avoid this by having VM_WriteBarrier implement "uninterruptible" which prevents the yield check in the epilog of the VM_WriteBarrier methods. We should verify if this is the case, and that it does what we want. It is an issue, and I think we must avoid potential yields between execuitng the barrier and doing the store. So maybe the reference counting approach is better, in that the store of the reference is par tof the barrier. I hope this helps a little, -Steve Hezi Azatchi <he...@cs...>@www-126.southbury.usf.ibm.com on 12/21/2001 09:46:39 AM Please respond to jik...@ww... Sent by: jik...@ww... To: <jik...@ww...> cc: Subject: Re: [Jikesrvm-researchers] Write barriers questions Hi Steve, If I understand you right, inorder to write atomically write-barrier that will fit concurrent garbage collectors as well as stop-the-world ones the calls to the VM_WriteBarrier should be issued from VM_Assembler and not from an auxiliary class as VM_Barriers. If the calls will be issued directly from VM_Assembler there won't be any context switching in the middle of an update (as the yield points can appear only at the prologue/epilogue and there's no back-edge in the write barrier code itself). Am I right? -Hezi. _______________________________________________ Jikesrvm-researchers mailing list Jik...@ww... http://www-124.ibm.com/developerworks/oss/mailman/listinfo/jikesrvm-researchers |