[rvm-research] Concurrent Semispace-related questions.
Claire Murphy <[email protected]>
| Newsgroups | gmane.comp.java.jikes.rvm.devel |
|---|---|
| Message-ID | <CAJG7W=-QT=+Ejp1OD4pfB-nC=52m0R6wc94jdF5UvcEcVtu-=g@mail.gmail.com> |
Hello, My name is Claire, and I am part of a team of students at Harvey Mudd College. We are trying to build a concurrent semispace collector using Jikes RVM. We have some questions that we hope you can clear up for us. 1) We have printed the address ranges for our two semispaces as well as the Large Object Space, and they appear to be the same ranges. Is this due to some feature of Jikes we don't understand, or is there some place we need to specify the address ranges to avoid this? We believe that this is causing us issues; our collector fails inside the Large Object Space, while accessing an object that is not large enough to be allocated there. (We set our allocator to be ALLOC_DEFAULT, as in the provided SS collector.) 2) We would like to use an atomic compare-and-swap to insert a forwarding pointer and forwarding bit into an object. We tried to use this code to do that: VM.objectModel.attemptAvailableBits(object, forwardingWord, forwardingWord.or(Word.fromIntZeroExtend(ForwardingWord.FORWARDED))); However, it didn't seem like it worked like we thought. Is it possible to CAS a pointer+header into an object this way? how? 3) What exactly happens in the mutator flush phase? We see that objects are traced/forwarded, then enqueued in a remembered set which is pushed to the GC. We would like to separate tracing from copying, so that only the GC ever needs to copy objects. What is necessary in order for this to happen? Will the GC already copy all objects in the remembered set if they are not copied? (assuming that copying and forwarding is done in our copySpace's traceObject function) 4) In RVMThread.java, there is a boolean, "activeMutatorContext" with the comment /** Is this a "registered mutator?" */ We assumed that this meant that checking this boolean checks whether a thread is a mutator (as opposed to a collector) but the check returns true even in what we believe are collector threads(as indicated when we checked isCollectorThread). What does this actually do? Thank you very much, Claire & the Harvey Mudd Clinic team ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ Jikesrvm-researchers mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers