From: Hezi A. <he...@cs...> - 2001-12-21 17:44:42
|
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. On Wed, 19 Dec 2001, Stephen E Smith wrote: > > I think Dave's description of the baseline writebarrier is the way it was, > and not the way it is.Just before the open source release VM_Barriers was > modified to emit calls to the methods of VM_WriteBarrier, the same methods > that are inlined by theopt compiler.This was made the case for both > powerPC and intel.For intel, the VM_Barrier code to emit the calls was > contributed by Jeff Stylos, shortly after the open source release.The > direct inlining of the baseline barrier was deleted.This was felt to be a > cleaner approach, even though less efficient for the powerPC baseline code. > The result is that the nature of the write barrier is determined by the > methods of VM_WriteBarrier, and is written in java, for both baseline and > opt compiledcode.This made it easier for the GCTk to use many different > wrtie barriers. > > Concerning the Reference Counting Barrier: > It would have been desireable to converge all the barriers, ie to > have Reference Counting also use VM_Barriers and emit calls to > VM_WriteBarrier.However, this requires changing the interface between > VM_Compiler and VM_Barrier.For the non RC barriers, VM_Barrier is called > just before emitting the code to store the reference, it emits the (call > to) code to implement the barrier, and returns to VM_Compiler, which then > proceeds to emit the code to do the store.With the reference counting > barrier, the barrier code actually does the store of the reference.It has > to be done with an atomic compare and swap, because garbage collection may > be executing concurrently with the mutator doing the store of the > reference.I thought converging all barriers to a common interface with > VM_Compiler would have required all barriers to emit the code (or call the > code) to do thestore of the reference (like RCBarriers), and this didn't > happen before the open source release, leaving us with the conditional code > in the compilers. > > -Steve Smith > > _______________________________________________ > Jikesrvm-researchers mailing list > Jik...@ww... > http://www-124.ibm.com/developerworks/oss/mailman/listinfo/jikesrvm-researchers > |