From: 100ji <itz...@gm...> - 2007-06-27 17:12:05
Attachments:
Plan.java
|
Hi all, I am trying to understand the current MMTk wrt to the old MMTk as part of the MC^2 porting project. The old MMTk I am referring to is the one on which the old MC^2 code is based (approximately Jikes 2.2.3 version), see attached Plan.java file that contains an implementation of MC^2 algo file for details. These are the few things I understood and a few questions I have. Kindly verify if my understanding is accurate and answer the questions I have. Changes between old MMTk(oMMTk) and current MMTk(MMTk): All the code in oMMTk was in the Plan class. In MMTk, I noticed a few major changes: - Code has been split up into several classes. - The concept of phases has been added and has been used by the StopTheWorld class from which all other classes inherit. Almost all of the processing in the sample GC's is being done in one of the phases in collectionPhase methods. - The concept of Spaces has been added to ease handling spaces. - Memory handling has been abstracted out and at least from the looks of it, the user need not bother about the virtual address anymore. Currently, there is a single plan class that does global initializations. For each application(mutator) thread there is a Mutator object (So, the number of mutator objects is the same as the number of application level threads). Usually, there is a 1:1 mapping between application threads and kernel threads. For each processor there is instance of the collector object. Similarly, there is a global Trace object that handles the global tracing and synchronisation. The TraceLocal object does the per-thread related tracing. Is my understanding correct? Questions: - Is there file/document that lists the order in which the methods in these classes are called for a simple algorithm? If this exists, it will make my understanding of the whole system much much more simpler. - Is there code for a GC algo in the latest release that is closest to MC^2 algo? - Does java spec mandate that there should be a 1:1 mapping between an application thread and an OS thread? - What does "heap is full" mean in a generational garbage collector? Why don't we say older generation is full instead? - Can anyone please take a look at the attached Plan.java file and give me a brief overview of how to port the algo. I have sort of understood parts of the file, but I am clueless on how I should be implementing an incremental marking and copying in the old code using the phases in StopTheWorld GC. MC^2[1] Specific questions: - In MC^2 algo the older generation is divided into multiple windows. Each window from a high level can be thought of as a generation itself, with an incremental marking and copying mechanism that works across all these windows. - How do I implement this feature? - Does using CopySpace per window work? - Should I be using Spaces? Is there any Space already that exhibits similar properties? - How much work would it be to implement a Space with the above properties? - Can MC^2 be used in non-generational mode? Will it be efficient? More later :). Thanks for your time, -Sowjanya [1] http://www.cs.umass.edu/~emery/pubs/04-15.pdf |
From: Eliot M. <mo...@cs...> - 2007-06-27 17:40:27
|
>>>>> "100ji" == 100ji <itz...@gm...> writes: 100ji> I am trying to understand the current MMTk wrt to the old MMTk 100ji> as part of the MC^2 porting project. The old MMTk I am referring 100ji> to is the one on which the old MC^2 code is based (approximately 100ji> Jikes 2.2.3 version), see attached Plan.java file that contains 100ji> an implementation of MC^2 algo file for details. 100ji> These are the few things I understood and a few questions I 100ji> have. Kindly verify if my understanding is accurate and answer 100ji> the questions I have. 100ji> Changes between old MMTk(oMMTk) and current MMTk(MMTk): 100ji> All the code in oMMTk was in the Plan class. In MMTk, I noticed 100ji> a few major changes: 100ji> - Code has been split up into several classes. 100ji> - The concept of phases has been added and has been used by the 100ji> StopTheWorld class from which all other classes inherit. Almost 100ji> all of the processing in the sample GC's is being done in one of 100ji> the phases in collectionPhase methods. 100ji> - The concept of Spaces has been added to ease handling spaces. 100ji> - Memory handling has been abstracted out and at least from the 100ji> looks of it, the user need not bother about the virtual address 100ji> anymore. Yes, but it is not clear that it doewsn't MATTER in order to achieve the best performance. (However, MC2 is probably parameterized enough that hard address ranges burned in at build time won't help much.) 100ji> Currently, there is a single plan class that does global 100ji> initializations. For each application(mutator) thread there is a 100ji> Mutator object (So, the number of mutator objects is the same as 100ji> the number of application level threads). Usually, there is a 100ji> 1:1 mapping between application threads and kernel threads. For 100ji> each processor there is instance of the collector 100ji> object. Similarly, there is a global Trace object that handles 100ji> the global tracing and synchronisation. The TraceLocal object 100ji> does the per-thread related tracing. 100ji> Is my understanding correct? Not exactly. In the above replace "thread" with "VM_Processor" and you'll be close. It multiplexes multiple user/Java threads onto each VM_Processor; a VM_Processor uses one OS thread to execute. 100ji> Questions: 100ji> - Is there file/document that lists the order in which the 100ji> methods in these classes are called for a simple algorithm? If 100ji> this exists, it will make my understanding of the whole system 100ji> much much more simpler. Not eaxctly; just look at acutal algorithms (start with simple ones). There IS a tutorial, but I don't know how up to date it is. 100ji> - Is there code for a GC algo in the latest release that is closest to 100ji> MC^2 algo? By definition some algorithm is "closest", but the closest is likely to be gen copy, which is not very close in the sense that you mean. Beltway would be closer, but modern verisons have not been checked in. (Maybe Richard Jones could help -- but it's complicated and I'm not sure it would be eth best starting place either.) 100ji> - Does java spec mandate that there should be a 1:1 mapping 100ji> between an application thread and an OS thread? No -- but why do you ask? What is it that you're contemplating? 100ji> - What does "heap is full" mean in a generational garbage collector? 100ji> Why don't we say older generation is full instead? Well, if you mean returning a "we're totally full, I give up" error to the user, then it is not so much that the old gen is full but that the system will wedge. (If the old gen is full and not allowed to grow, there's not much point in allocating in the nursery, since you won't be able to collect it.) 100ji> - Can anyone please take a look at the attached Plan.java file and 100ji> give me a brief overview of how to port the algo. I have sort of 100ji> understood parts of the file, but I am clueless on how I should be 100ji> implementing an incremental marking and copying in the old code using 100ji> the phases in StopTheWorld GC. Sorry, I don't have time for that. 100ji> MC^2[1] Specific questions: 100ji> - In MC^2 algo the older generation is divided into multiple windows. 100ji> Each window from a high level can be thought of as a generation 100ji> itself, with an incremental marking and copying mechanism that works 100ji> across all these windows. 100ji> - How do I implement this feature? 100ji> - Does using CopySpace per window work? 100ji> - Should I be using Spaces? Is there any Space already that exhibits 100ji> similar properties? 100ji> - How much work would it be to implement a Space with the above properties? 100ji> - Can MC^2 be used in non-generational mode? Will it be efficient? Good questions for your mentor!! Eliot |
From: 100ji <itz...@gm...> - 2007-07-03 08:08:12
|
Hi Eliot, Some of the questions are in the "Out of Curiosity" category. Thanks for patient explanations to my newbie questions. -Sowji On 6/27/07, Eliot Moss <mo...@cs...> wrote: > >>>>> "100ji" == 100ji <itz...@gm...> writes: > > 100ji> I am trying to understand the current MMTk wrt to the old MMTk > 100ji> as part of the MC^2 porting project. The old MMTk I am referring > 100ji> to is the one on which the old MC^2 code is based (approximately > 100ji> Jikes 2.2.3 version), see attached Plan.java file that contains > 100ji> an implementation of MC^2 algo file for details. > > 100ji> These are the few things I understood and a few questions I > 100ji> have. Kindly verify if my understanding is accurate and answer > 100ji> the questions I have. > > 100ji> Changes between old MMTk(oMMTk) and current MMTk(MMTk): > > 100ji> All the code in oMMTk was in the Plan class. In MMTk, I noticed > 100ji> a few major changes: > > 100ji> - Code has been split up into several classes. > > 100ji> - The concept of phases has been added and has been used by the > 100ji> StopTheWorld class from which all other classes inherit. Almost > 100ji> all of the processing in the sample GC's is being done in one of > 100ji> the phases in collectionPhase methods. > > 100ji> - The concept of Spaces has been added to ease handling spaces. > > 100ji> - Memory handling has been abstracted out and at least from the > 100ji> looks of it, the user need not bother about the virtual address > 100ji> anymore. > > Yes, but it is not clear that it doewsn't MATTER in order to achieve the > best performance. (However, MC2 is probably parameterized enough that hard > address ranges burned in at build time won't help much.) > > 100ji> Currently, there is a single plan class that does global > 100ji> initializations. For each application(mutator) thread there is a > 100ji> Mutator object (So, the number of mutator objects is the same as > 100ji> the number of application level threads). Usually, there is a > 100ji> 1:1 mapping between application threads and kernel threads. For > 100ji> each processor there is instance of the collector > 100ji> object. Similarly, there is a global Trace object that handles > 100ji> the global tracing and synchronisation. The TraceLocal object > 100ji> does the per-thread related tracing. > > 100ji> Is my understanding correct? > > Not exactly. In the above replace "thread" with "VM_Processor" and you'll > be close. It multiplexes multiple user/Java threads onto each VM_Processor; > a VM_Processor uses one OS thread to execute. > > 100ji> Questions: > > 100ji> - Is there file/document that lists the order in which the > 100ji> methods in these classes are called for a simple algorithm? If > 100ji> this exists, it will make my understanding of the whole system > 100ji> much much more simpler. > > Not eaxctly; just look at acutal algorithms (start with simple ones). There > IS a tutorial, but I don't know how up to date it is. > > 100ji> - Is there code for a GC algo in the latest release that is closest to > 100ji> MC^2 algo? > > By definition some algorithm is "closest", but the closest is likely to be > gen copy, which is not very close in the sense that you mean. Beltway would > be closer, but modern verisons have not been checked in. (Maybe Richard > Jones could help -- but it's complicated and I'm not sure it would be eth > best starting place either.) > > 100ji> - Does java spec mandate that there should be a 1:1 mapping > 100ji> between an application thread and an OS thread? > > No -- but why do you ask? What is it that you're contemplating? > > 100ji> - What does "heap is full" mean in a generational garbage collector? > 100ji> Why don't we say older generation is full instead? > > Well, if you mean returning a "we're totally full, I give up" error to the > user, then it is not so much that the old gen is full but that the system > will wedge. (If the old gen is full and not allowed to grow, there's not > much point in allocating in the nursery, since you won't be able to collect > it.) > > 100ji> - Can anyone please take a look at the attached Plan.java file and > 100ji> give me a brief overview of how to port the algo. I have sort of > 100ji> understood parts of the file, but I am clueless on how I should be > 100ji> implementing an incremental marking and copying in the old code using > 100ji> the phases in StopTheWorld GC. > > Sorry, I don't have time for that. > > 100ji> MC^2[1] Specific questions: > > 100ji> - In MC^2 algo the older generation is divided into multiple windows. > 100ji> Each window from a high level can be thought of as a generation > 100ji> itself, with an incremental marking and copying mechanism that works > 100ji> across all these windows. > 100ji> - How do I implement this feature? > 100ji> - Does using CopySpace per window work? > 100ji> - Should I be using Spaces? Is there any Space already that exhibits > 100ji> similar properties? > 100ji> - How much work would it be to implement a Space with the above properties? > 100ji> - Can MC^2 be used in non-generational mode? Will it be efficient? > > Good questions for your mentor!! > > Eliot > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > |
From: Robin G. <rob...@an...> - 2007-06-28 02:35:26
|
Hi Sowjanya, While Eliot is right in that the MMTk tutorial is out of date in its specifics, the spirit of the tutorial is correct. I strongly feel that you should complete the tutorial before trying to go any further with MC^2. The outline of the tutorial is: 1. Take a copy of NoGC, called MyGC or something. Get this building and working. Lesson: how to create a 'new' GC plan, and build and run it. 2. Add a mark-sweep space to MyGC (ie build MarkSweep). Lesson: basics collection of a new space. 3. Add a copying nursery to MyGC, but perform full-heap collection at every GC. This is the CopyMS collector. Lesson: handling copying spaces. 4. Make the collector fully generational, by adding write barriers and separate nursery and mature space GC. Lesson: handling remsets, barriers and different 'flavours' of GC. Daniel and I will be happy to answer any questions you have getting through the tutorial. While the exact details of the latest version are not quite correct, the general outline of the tutorial is still correct, and is the best way we know of of coming to terms with how MMTk works. cheers Robin 100ji wrote: > Hi all, > > I am trying to understand the current MMTk wrt to the old MMTk as > part of the MC^2 porting project. The old MMTk I am referring to is > the one on which the old MC^2 code is based (approximately Jikes 2.2.3 > version), see attached Plan.java file that contains an implementation > of MC^2 algo file for details. > > These are the few things I understood and a few questions I have. > Kindly verify if my understanding is accurate and answer the questions > I have. > > Changes between old MMTk(oMMTk) and current MMTk(MMTk): > > All the code in oMMTk was in the Plan class. In MMTk, I noticed a few > major changes: > > - Code has been split up into several classes. > - The concept of phases has been added and has been used by the > StopTheWorld class from which all other classes inherit. Almost all of > the processing in the sample GC's is being done in one of the phases > in collectionPhase methods. > - The concept of Spaces has been added to ease handling spaces. > - Memory handling has been abstracted out and at least from the looks > of it, the user need not bother about the virtual address anymore. > > Currently, there is a single plan class that does global > initializations. For each application(mutator) thread there is a > Mutator object (So, the number of mutator objects is the same as the > number of application level threads). Usually, there is a 1:1 mapping > between application threads and kernel threads. For each processor > there is instance of the collector object. Similarly, there is a > global Trace object that handles the global tracing and > synchronisation. The TraceLocal object does the per-thread related > tracing. > > Is my understanding correct? > > Questions: > > - Is there file/document that lists the order in which the methods in > these classes are called for a simple algorithm? If this exists, it > will make my understanding of the whole system much much more simpler. > - Is there code for a GC algo in the latest release that is closest to > MC^2 algo? > - Does java spec mandate that there should be a 1:1 mapping between an > application thread and an OS thread? > - What does "heap is full" mean in a generational garbage collector? > Why don't we say older generation is full instead? > - Can anyone please take a look at the attached Plan.java file and > give me a brief overview of how to port the algo. I have sort of > understood parts of the file, but I am clueless on how I should be > implementing an incremental marking and copying in the old code using > the phases in StopTheWorld GC. > > MC^2[1] Specific questions: > > - In MC^2 algo the older generation is divided into multiple windows. > Each window from a high level can be thought of as a generation > itself, with an incremental marking and copying mechanism that works > across all these windows. > - How do I implement this feature? > - Does using CopySpace per window work? > - Should I be using Spaces? Is there any Space already that > exhibits > similar properties? > - How much work would it be to implement a Space with the above > properties? > - Can MC^2 be used in non-generational mode? Will it be efficient? > > More later :). > > Thanks for your time, > -Sowjanya > > [1] http://www.cs.umass.edu/~emery/pubs/04-15.pdf > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > > > ------------------------------------------------------------------------ > > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core -- Robin Garner Dept. of Computer Science Australian National University http://cs.anu.edu.au/people/Robin.Garner/ |
From: 100ji <itz...@gm...> - 2007-07-02 16:01:40
|
Hi Robin, Thanks for the reply. I have gone through the tutorial and implemented part(1 and 2) of it. However, the one I am looking at has the Generational collector as a TODO and I read the code to understand(vaguely) how to implement one. Is there a document that explains implementing a generational collector too? Thanks in advance, -Sowji On 6/28/07, Robin Garner <rob...@an...> wrote: > Hi Sowjanya, > > While Eliot is right in that the MMTk tutorial is out of date in its > specifics, the spirit of the tutorial is correct. I strongly feel that > you should complete the tutorial before trying to go any further with MC^2. > > The outline of the tutorial is: > 1. Take a copy of NoGC, called MyGC or something. Get this building and > working. Lesson: how to create a 'new' GC plan, and build and run it. > 2. Add a mark-sweep space to MyGC (ie build MarkSweep). Lesson: basics > collection of a new space. > 3. Add a copying nursery to MyGC, but perform full-heap collection at > every GC. This is the CopyMS collector. Lesson: handling copying spaces. > 4. Make the collector fully generational, by adding write barriers and > separate nursery and mature space GC. Lesson: handling remsets, > barriers and different 'flavours' of GC. > > Daniel and I will be happy to answer any questions you have getting > through the tutorial. While the exact details of the latest version are > not quite correct, the general outline of the tutorial is still correct, > and is the best way we know of of coming to terms with how MMTk works. > > cheers > Robin > > 100ji wrote: > > Hi all, > > > > I am trying to understand the current MMTk wrt to the old MMTk as > > part of the MC^2 porting project. The old MMTk I am referring to is > > the one on which the old MC^2 code is based (approximately Jikes 2.2.3 > > version), see attached Plan.java file that contains an implementation > > of MC^2 algo file for details. > > > > These are the few things I understood and a few questions I have. > > Kindly verify if my understanding is accurate and answer the questions > > I have. > > > > Changes between old MMTk(oMMTk) and current MMTk(MMTk): > > > > All the code in oMMTk was in the Plan class. In MMTk, I noticed a few > > major changes: > > > > - Code has been split up into several classes. > > - The concept of phases has been added and has been used by the > > StopTheWorld class from which all other classes inherit. Almost all of > > the processing in the sample GC's is being done in one of the phases > > in collectionPhase methods. > > - The concept of Spaces has been added to ease handling spaces. > > - Memory handling has been abstracted out and at least from the looks > > of it, the user need not bother about the virtual address anymore. > > > > Currently, there is a single plan class that does global > > initializations. For each application(mutator) thread there is a > > Mutator object (So, the number of mutator objects is the same as the > > number of application level threads). Usually, there is a 1:1 mapping > > between application threads and kernel threads. For each processor > > there is instance of the collector object. Similarly, there is a > > global Trace object that handles the global tracing and > > synchronisation. The TraceLocal object does the per-thread related > > tracing. > > > > Is my understanding correct? > > > > Questions: > > > > - Is there file/document that lists the order in which the methods in > > these classes are called for a simple algorithm? If this exists, it > > will make my understanding of the whole system much much more simpler. > > - Is there code for a GC algo in the latest release that is closest to > > MC^2 algo? > > - Does java spec mandate that there should be a 1:1 mapping between an > > application thread and an OS thread? > > - What does "heap is full" mean in a generational garbage collector? > > Why don't we say older generation is full instead? > > - Can anyone please take a look at the attached Plan.java file and > > give me a brief overview of how to port the algo. I have sort of > > understood parts of the file, but I am clueless on how I should be > > implementing an incremental marking and copying in the old code using > > the phases in StopTheWorld GC. > > > > MC^2[1] Specific questions: > > > > - In MC^2 algo the older generation is divided into multiple windows. > > Each window from a high level can be thought of as a generation > > itself, with an incremental marking and copying mechanism that works > > across all these windows. > > - How do I implement this feature? > > - Does using CopySpace per window work? > > - Should I be using Spaces? Is there any Space already that > > exhibits > > similar properties? > > - How much work would it be to implement a Space with the above > > properties? > > - Can MC^2 be used in non-generational mode? Will it be efficient? > > > > More later :). > > > > Thanks for your time, > > -Sowjanya > > > > [1] http://www.cs.umass.edu/~emery/pubs/04-15.pdf > > > > > > ------------------------------------------------------------------------ > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by DB2 Express > > Download DB2 Express C - the FREE version of DB2 express and take > > control of your XML. No limits. Just data. Click to get it now. > > http://sourceforge.net/powerbar/db2/ > > > > > > ------------------------------------------------------------------------ > > > > _______________________________________________ > > Jikesrvm-core mailing list > > Jik...@li... > > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > > > -- > Robin Garner > Dept. of Computer Science > Australian National University > http://cs.anu.edu.au/people/Robin.Garner/ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > |
From: Robin G. <rob...@an...> - 2007-07-03 01:31:09
|
Steve and Perry's original presentation is on http://www.jikesrvm.org/Presentations cheers 100ji wrote: > Hi Robin, > > Thanks for the reply. I have gone through the tutorial and > implemented part(1 and 2) of it. However, the one I am looking at has > the Generational collector as a TODO and I read the code to > understand(vaguely) how to implement one. Is there a document that > explains implementing a generational collector too? > > Thanks in advance, > -Sowji > > On 6/28/07, Robin Garner <rob...@an...> wrote: >> Hi Sowjanya, >> >> While Eliot is right in that the MMTk tutorial is out of date in its >> specifics, the spirit of the tutorial is correct. I strongly feel that >> you should complete the tutorial before trying to go any further with MC^2. >> >> The outline of the tutorial is: >> 1. Take a copy of NoGC, called MyGC or something. Get this building and >> working. Lesson: how to create a 'new' GC plan, and build and run it. >> 2. Add a mark-sweep space to MyGC (ie build MarkSweep). Lesson: basics >> collection of a new space. >> 3. Add a copying nursery to MyGC, but perform full-heap collection at >> every GC. This is the CopyMS collector. Lesson: handling copying spaces. >> 4. Make the collector fully generational, by adding write barriers and >> separate nursery and mature space GC. Lesson: handling remsets, >> barriers and different 'flavours' of GC. >> >> Daniel and I will be happy to answer any questions you have getting >> through the tutorial. While the exact details of the latest version are >> not quite correct, the general outline of the tutorial is still correct, >> and is the best way we know of of coming to terms with how MMTk works. >> >> cheers >> Robin >> >> 100ji wrote: >>> Hi all, >>> >>> I am trying to understand the current MMTk wrt to the old MMTk as >>> part of the MC^2 porting project. The old MMTk I am referring to is >>> the one on which the old MC^2 code is based (approximately Jikes 2.2.3 >>> version), see attached Plan.java file that contains an implementation >>> of MC^2 algo file for details. >>> >>> These are the few things I understood and a few questions I have. >>> Kindly verify if my understanding is accurate and answer the questions >>> I have. >>> >>> Changes between old MMTk(oMMTk) and current MMTk(MMTk): >>> >>> All the code in oMMTk was in the Plan class. In MMTk, I noticed a few >>> major changes: >>> >>> - Code has been split up into several classes. >>> - The concept of phases has been added and has been used by the >>> StopTheWorld class from which all other classes inherit. Almost all of >>> the processing in the sample GC's is being done in one of the phases >>> in collectionPhase methods. >>> - The concept of Spaces has been added to ease handling spaces. >>> - Memory handling has been abstracted out and at least from the looks >>> of it, the user need not bother about the virtual address anymore. >>> >>> Currently, there is a single plan class that does global >>> initializations. For each application(mutator) thread there is a >>> Mutator object (So, the number of mutator objects is the same as the >>> number of application level threads). Usually, there is a 1:1 mapping >>> between application threads and kernel threads. For each processor >>> there is instance of the collector object. Similarly, there is a >>> global Trace object that handles the global tracing and >>> synchronisation. The TraceLocal object does the per-thread related >>> tracing. >>> >>> Is my understanding correct? >>> >>> Questions: >>> >>> - Is there file/document that lists the order in which the methods in >>> these classes are called for a simple algorithm? If this exists, it >>> will make my understanding of the whole system much much more simpler. >>> - Is there code for a GC algo in the latest release that is closest to >>> MC^2 algo? >>> - Does java spec mandate that there should be a 1:1 mapping between an >>> application thread and an OS thread? >>> - What does "heap is full" mean in a generational garbage collector? >>> Why don't we say older generation is full instead? >>> - Can anyone please take a look at the attached Plan.java file and >>> give me a brief overview of how to port the algo. I have sort of >>> understood parts of the file, but I am clueless on how I should be >>> implementing an incremental marking and copying in the old code using >>> the phases in StopTheWorld GC. >>> >>> MC^2[1] Specific questions: >>> >>> - In MC^2 algo the older generation is divided into multiple windows. >>> Each window from a high level can be thought of as a generation >>> itself, with an incremental marking and copying mechanism that works >>> across all these windows. >>> - How do I implement this feature? >>> - Does using CopySpace per window work? >>> - Should I be using Spaces? Is there any Space already that >>> exhibits >>> similar properties? >>> - How much work would it be to implement a Space with the above >>> properties? >>> - Can MC^2 be used in non-generational mode? Will it be efficient? >>> >>> More later :). >>> >>> Thanks for your time, >>> -Sowjanya >>> >>> [1] http://www.cs.umass.edu/~emery/pubs/04-15.pdf >>> >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------- >>> This SF.net email is sponsored by DB2 Express >>> Download DB2 Express C - the FREE version of DB2 express and take >>> control of your XML. No limits. Just data. Click to get it now. >>> http://sourceforge.net/powerbar/db2/ >>> >>> >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Jikesrvm-core mailing list >>> Jik...@li... >>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-core >> >> -- >> Robin Garner >> Dept. of Computer Science >> Australian National University >> http://cs.anu.edu.au/people/Robin.Garner/ >> >> ------------------------------------------------------------------------- >> This SF.net email is sponsored by DB2 Express >> Download DB2 Express C - the FREE version of DB2 express and take >> control of your XML. No limits. Just data. Click to get it now. >> http://sourceforge.net/powerbar/db2/ >> _______________________________________________ >> Jikesrvm-core mailing list >> Jik...@li... >> https://lists.sourceforge.net/lists/listinfo/jikesrvm-core >> > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core -- Robin Garner Dept. of Computer Science Australian National University http://cs.anu.edu.au/people/Robin.Garner/ |
From: 100ji <itz...@gm...> - 2007-07-03 08:07:06
|
Hi Robin, I tried to get that presentation ( http://jikesrvm.sourceforge.net/info/talks/ISMM04-MMTk.pdf) . But, it has been moved somewhere. Can you please send the presentation to me off list. Thanks. On 7/3/07, Robin Garner <rob...@an...> wrote: > Steve and Perry's original presentation is on > > http://www.jikesrvm.org/Presentations > > cheers > > 100ji wrote: > > Hi Robin, > > > > Thanks for the reply. I have gone through the tutorial and > > implemented part(1 and 2) of it. However, the one I am looking at has > > the Generational collector as a TODO and I read the code to > > understand(vaguely) how to implement one. Is there a document that > > explains implementing a generational collector too? > > > > Thanks in advance, > > -Sowji > > > > On 6/28/07, Robin Garner <rob...@an...> wrote: > >> Hi Sowjanya, > >> > >> While Eliot is right in that the MMTk tutorial is out of date in its > >> specifics, the spirit of the tutorial is correct. I strongly feel that > >> you should complete the tutorial before trying to go any further with MC^2. > >> > >> The outline of the tutorial is: > >> 1. Take a copy of NoGC, called MyGC or something. Get this building and > >> working. Lesson: how to create a 'new' GC plan, and build and run it. > >> 2. Add a mark-sweep space to MyGC (ie build MarkSweep). Lesson: basics > >> collection of a new space. > >> 3. Add a copying nursery to MyGC, but perform full-heap collection at > >> every GC. This is the CopyMS collector. Lesson: handling copying spaces. > >> 4. Make the collector fully generational, by adding write barriers and > >> separate nursery and mature space GC. Lesson: handling remsets, > >> barriers and different 'flavours' of GC. > >> > >> Daniel and I will be happy to answer any questions you have getting > >> through the tutorial. While the exact details of the latest version are > >> not quite correct, the general outline of the tutorial is still correct, > >> and is the best way we know of of coming to terms with how MMTk works. > >> > >> cheers > >> Robin > >> > >> 100ji wrote: > >>> Hi all, > >>> > >>> I am trying to understand the current MMTk wrt to the old MMTk as > >>> part of the MC^2 porting project. The old MMTk I am referring to is > >>> the one on which the old MC^2 code is based (approximately Jikes 2.2.3 > >>> version), see attached Plan.java file that contains an implementation > >>> of MC^2 algo file for details. > >>> > >>> These are the few things I understood and a few questions I have. > >>> Kindly verify if my understanding is accurate and answer the questions > >>> I have. > >>> > >>> Changes between old MMTk(oMMTk) and current MMTk(MMTk): > >>> > >>> All the code in oMMTk was in the Plan class. In MMTk, I noticed a few > >>> major changes: > >>> > >>> - Code has been split up into several classes. > >>> - The concept of phases has been added and has been used by the > >>> StopTheWorld class from which all other classes inherit. Almost all of > >>> the processing in the sample GC's is being done in one of the phases > >>> in collectionPhase methods. > >>> - The concept of Spaces has been added to ease handling spaces. > >>> - Memory handling has been abstracted out and at least from the looks > >>> of it, the user need not bother about the virtual address anymore. > >>> > >>> Currently, there is a single plan class that does global > >>> initializations. For each application(mutator) thread there is a > >>> Mutator object (So, the number of mutator objects is the same as the > >>> number of application level threads). Usually, there is a 1:1 mapping > >>> between application threads and kernel threads. For each processor > >>> there is instance of the collector object. Similarly, there is a > >>> global Trace object that handles the global tracing and > >>> synchronisation. The TraceLocal object does the per-thread related > >>> tracing. > >>> > >>> Is my understanding correct? > >>> > >>> Questions: > >>> > >>> - Is there file/document that lists the order in which the methods in > >>> these classes are called for a simple algorithm? If this exists, it > >>> will make my understanding of the whole system much much more simpler. > >>> - Is there code for a GC algo in the latest release that is closest to > >>> MC^2 algo? > >>> - Does java spec mandate that there should be a 1:1 mapping between an > >>> application thread and an OS thread? > >>> - What does "heap is full" mean in a generational garbage collector? > >>> Why don't we say older generation is full instead? > >>> - Can anyone please take a look at the attached Plan.java file and > >>> give me a brief overview of how to port the algo. I have sort of > >>> understood parts of the file, but I am clueless on how I should be > >>> implementing an incremental marking and copying in the old code using > >>> the phases in StopTheWorld GC. > >>> > >>> MC^2[1] Specific questions: > >>> > >>> - In MC^2 algo the older generation is divided into multiple windows. > >>> Each window from a high level can be thought of as a generation > >>> itself, with an incremental marking and copying mechanism that works > >>> across all these windows. > >>> - How do I implement this feature? > >>> - Does using CopySpace per window work? > >>> - Should I be using Spaces? Is there any Space already that > >>> exhibits > >>> similar properties? > >>> - How much work would it be to implement a Space with the above > >>> properties? > >>> - Can MC^2 be used in non-generational mode? Will it be efficient? > >>> > >>> More later :). > >>> > >>> Thanks for your time, > >>> -Sowjanya > >>> > >>> [1] http://www.cs.umass.edu/~emery/pubs/04-15.pdf > >>> > >>> > >>> ------------------------------------------------------------------------ > >>> > >>> ------------------------------------------------------------------------- > >>> This SF.net email is sponsored by DB2 Express > >>> Download DB2 Express C - the FREE version of DB2 express and take > >>> control of your XML. No limits. Just data. Click to get it now. > >>> http://sourceforge.net/powerbar/db2/ > >>> > >>> > >>> ------------------------------------------------------------------------ > >>> > >>> _______________________________________________ > >>> Jikesrvm-core mailing list > >>> Jik...@li... > >>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > >> > >> -- > >> Robin Garner > >> Dept. of Computer Science > >> Australian National University > >> http://cs.anu.edu.au/people/Robin.Garner/ > >> > >> ------------------------------------------------------------------------- > >> This SF.net email is sponsored by DB2 Express > >> Download DB2 Express C - the FREE version of DB2 express and take > >> control of your XML. No limits. Just data. Click to get it now. > >> http://sourceforge.net/powerbar/db2/ > >> _______________________________________________ > >> Jikesrvm-core mailing list > >> Jik...@li... > >> https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > >> > > > > ------------------------------------------------------------------------- > > This SF.net email is sponsored by DB2 Express > > Download DB2 Express C - the FREE version of DB2 express and take > > control of your XML. No limits. Just data. Click to get it now. > > http://sourceforge.net/powerbar/db2/ > > _______________________________________________ > > Jikesrvm-core mailing list > > Jik...@li... > > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > > > -- > Robin Garner > Dept. of Computer Science > Australian National University > http://cs.anu.edu.au/people/Robin.Garner/ > > ------------------------------------------------------------------------- > This SF.net email is sponsored by DB2 Express > Download DB2 Express C - the FREE version of DB2 express and take > control of your XML. No limits. Just data. Click to get it now. > http://sourceforge.net/powerbar/db2/ > _______________________________________________ > Jikesrvm-core mailing list > Jik...@li... > https://lists.sourceforge.net/lists/listinfo/jikesrvm-core > |
From: <rob...@an...> - 2007-07-03 13:44:12
|
Hi Sowjanya=2C There=27s another copy here http=3A//www=2Eresearch=2Eibm=2Ecom/ismm04/s= lides/mmtk-tutorial=2Epdf=2C but I don=27t actually think it has the ste= p-by-step=2E Off the top of my head=2C the steps you need are=3A - Add a write barrier=2C and a remembered set=2E - Add a second TraceLocal class to perform a nursery trace=2E - Add some logic to =27poll=27 to decide when to do a nursery collection= or a full-heap collection - Modify MyGcCollector to handle both nursery and mature-space collectio= n (in the actual generational collectors this is split between the =27ge= n=27 package and the per-mature-space packages=2E cheers ----- Original Message ----- From=3A 100ji =3Citz100ji=40gmail=2Ecom=3E Date=3A Tuesday=2C July 3=2C 2007 6=3A07 pm Subject=3A Re=3A =5BJikesrvm-core=5D MMTk Questions To=3A Discussion of day-to-day development and design among JikesRVM cor= e team members =3Cjikesrvm-core=40lists=2Esourceforge=2Enet=3E =3E Hi Robin=2C =3E = =3E I tried to get that presentation ( =3E http=3A//jikesrvm=2Esourceforge=2Enet/info/talks/ISMM04-MMTk=2Epdf) = =2E = =3E But=2C it =3E has been moved somewhere=2E Can you please send the presentation = =3E to me =3E off list=2E =3E = =3E Thanks=2E =3E = =3E On 7/3/07=2C Robin Garner =3Crobin=2Egarner=40anu=2Eedu=2Eau=3E wrot= e=3A =3E =3E Steve and Perry=27s original presentation is on =3E =3E =3E =3E http=3A//www=2Ejikesrvm=2Eorg/Presentations =3E =3E =3E =3E cheers =3E =3E =3E =3E 100ji wrote=3A =3E =3E =3E Hi Robin=2C =3E =3E =3E =3E =3E =3E Thanks for the reply=2E=A0 I have gone through the tutorial = and =3E =3E =3E implemented part(1 and 2) of it=2E However=2C the one I am = =3E looking at has =3E =3E =3E the Generational collector as a TODO and I read the code to =3E =3E =3E understand(vaguely) how to implement one=2E=A0 Is there a = =3E document that =3E =3E =3E explains implementing a generational collector too=3F =3E =3E =3E =3E =3E =3E Thanks in advance=2C =3E =3E =3E -Sowji =3E =3E =3E =3E =3E =3E On 6/28/07=2C Robin Garner =3Crobin=2Egarner=40anu=2Eedu=2Ea= u=3E wrote=3A =3E =3E =3E=3E Hi Sowjanya=2C =3E =3E =3E=3E =3E =3E =3E=3E While Eliot is right in that the MMTk tutorial is out of = =3E date in its =3E =3E =3E=3E specifics=2C the spirit of the tutorial is correct=2E=A0 = I = =3E strongly feel that =3E =3E =3E=3E you should complete the tutorial before trying to go any = =3E further with MC=5E2=2E =3E =3E =3E=3E =3E =3E =3E=3E The outline of the tutorial is=3A =3E =3E =3E=3E 1=2E Take a copy of NoGC=2C called MyGC or something=2E=A0= Get = =3E this building and =3E =3E =3E=3E working=2E=A0 Lesson=3A how to create a =27new=27 GC plan= =2C and = =3E build and run it=2E =3E =3E =3E=3E 2=2E Add a mark-sweep space to MyGC (ie build = =3E MarkSweep)=2E=A0 Lesson=3A basics =3E =3E =3E=3E collection of a new space=2E =3E =3E =3E=3E 3=2E Add a copying nursery to MyGC=2C but perform full-he= ap = =3E collection at =3E =3E =3E=3E every GC=2E=A0 This is the CopyMS collector=2E=A0 Lesson=3A= = =3E handling copying spaces=2E =3E =3E =3E=3E 4=2E Make the collector fully generational=2C by adding w= rite = =3E barriers and =3E =3E =3E=3E separate nursery and mature space GC=2E=A0 Lesson=3A = =3E handling remsets=2C =3E =3E =3E=3E barriers and different =27flavours=27 of GC=2E =3E =3E =3E=3E =3E =3E =3E=3E Daniel and I will be happy to answer any questions you ha= ve = =3E getting=3E =3E=3E through the tutorial=2E=A0 While the exact details= = =3E of the latest version are =3E =3E =3E=3E not quite correct=2C the general outline of the tutorial = is = =3E still correct=2C =3E =3E =3E=3E and is the best way we know of of coming to terms with ho= w = =3E MMTk works=2E =3E =3E =3E=3E =3E =3E =3E=3E cheers =3E =3E =3E=3E Robin =3E =3E =3E=3E =3E =3E =3E=3E 100ji wrote=3A =3E =3E =3E=3E=3E Hi all=2C =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E I am trying to=A0 understand the current MMTk wrt to = =3E the old MMTk as =3E =3E =3E=3E=3E part of the MC=5E2 porting project=2E The old MMTk I a= m = =3E referring to is =3E =3E =3E=3E=3E the one on which the old MC=5E2 code is based (approxi= mately = =3E Jikes 2=2E2=2E3 =3E =3E =3E=3E=3E version)=2C see attached Plan=2Ejava file that contain= s an = =3E implementation=3E =3E=3E=3E of MC=5E2 algo file for details=2E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E These are the few things I understood and a few questi= ons = =3E I have=2E =3E =3E =3E=3E=3E Kindly verify if my understanding is accurate and answ= er = =3E the questions =3E =3E =3E=3E=3E I have=2E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E Changes between old MMTk(oMMTk) and current MMTk(MMTk)= =3A =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E All the code in oMMTk was in the Plan class=2E=A0 In = =3E MMTk=2C I noticed a few =3E =3E =3E=3E=3E major changes=3A =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E - Code has been split up into several classes=2E =3E =3E =3E=3E=3E - The concept of phases has been added and has been us= ed = =3E by the =3E =3E =3E=3E=3E StopTheWorld class from which all other classes inheri= t=2E = =3E Almost all of =3E =3E =3E=3E=3E the processing in the sample GC=27s is being done in o= ne of = =3E the phases =3E =3E =3E=3E=3E in collectionPhase methods=2E =3E =3E =3E=3E=3E - The concept of Spaces has been added to ease handlin= g spaces=2E =3E =3E =3E=3E=3E - Memory handling has been abstracted out and at least= = =3E from the looks =3E =3E =3E=3E=3E of it=2C the user need not bother about the virtual ad= dress = =3E anymore=2E=3E =3E=3E=3E =3E =3E =3E=3E=3E Currently=2C there is a single plan class that does gl= obal =3E =3E =3E=3E=3E initializations=2E For each application(mutator) threa= d = =3E there is a =3E =3E =3E=3E=3E Mutator object (So=2C the number of mutator objects is= the = =3E same as the =3E =3E =3E=3E=3E number of application level threads)=2E Usually=2C the= re is a = =3E 1=3A1 mapping =3E =3E =3E=3E=3E between application threads and kernel threads=2E For = each = =3E processor=3E =3E=3E=3E there is instance of the collector object=2E = =3E Similarly=2C there is a =3E =3E =3E=3E=3E global Trace object that handles the global tracing an= d =3E =3E =3E=3E=3E synchronisation=2E=A0 The TraceLocal object does the p= er- =3E thread related =3E =3E =3E=3E=3E tracing=2E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E Is my understanding correct=3F =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E Questions=3A =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E - Is there file/document that lists the order in which= the = =3E methods in =3E =3E =3E=3E=3E these classes are called=A0 for a simple algorithm=3F = If = =3E this exists=2C it =3E =3E =3E=3E=3E will make my understanding of the whole system much mu= ch = =3E more simpler=2E =3E =3E =3E=3E=3E - Is there code for a GC algo in the latest release th= at = =3E is closest to =3E =3E =3E=3E=3E MC=5E2 algo=3F =3E =3E =3E=3E=3E - Does java spec mandate that there should be a 1=3A1 = =3E mapping between an =3E =3E =3E=3E=3E application thread and an OS thread=3F =3E =3E =3E=3E=3E - What does =22heap is full=22 mean in a generational = garbage = =3E collector=3F=3E =3E=3E=3E Why don=27t we say older generation is ful= l instead=3F =3E =3E =3E=3E=3E - Can anyone please take a look at the attached Plan=2E= java = =3E file and =3E =3E =3E=3E=3E give me a brief overview of how to port the algo=2E I = have = =3E sort of =3E =3E =3E=3E=3E understood parts of the file=2C but I am clueless on h= ow I = =3E should be =3E =3E =3E=3E=3E implementing an incremental marking and copying in the= old = =3E code using =3E =3E =3E=3E=3E the phases in StopTheWorld GC=2E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E MC=5E2=5B1=5D Specific questions=3A =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E=A0=A0=A0=A0 - In MC=5E2 algo the older = =3E generation is divided into multiple windows=2E =3E =3E =3E=3E=3E Each window from a high level can be thought of as a g= eneration =3E =3E =3E=3E=3E itself=2C with an incremental marking and copying mech= anism = =3E that works =3E =3E =3E=3E=3E across all these windows=2E =3E =3E =3E=3E=3E=A0=A0=A0=A0=A0=A0=A0=A0 - How do I = =3E implement this feature=3F =3E =3E = =3E =3E=3E=3E=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0 - Does using = CopySpace per window work=3F =3E =3E =3E=3E=3E=A0=A0=A0=A0=A0=A0=A0=A0 - Should I = =3E be using Spaces=3F Is there any Space already that =3E =3E =3E=3E=3E exhibits =3E =3E =3E=3E=3E similar properties=3F =3E =3E =3E=3E=3E=A0=A0=A0=A0=A0=A0=A0=A0 - How much = =3E work would it be to implement a Space with the above =3E =3E =3E=3E=3E properties=3F =3E =3E =3E=3E=3E=A0=A0=A0=A0 - Can MC=5E2 be used in non- =3E generational mode=3F Will it be efficient=3F =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E More later =3A)=2E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E Thanks for your time=2C =3E =3E =3E=3E=3E -Sowjanya =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E =5B1=5D http=3A//www=2Ecs=2Eumass=2Eedu/=7Eemery/pubs/= 04-15=2Epdf =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E ------------------------------------------------------= ----- =3E ------------- =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E ------------------------------------------------------= ----- =3E -------------- =3E =3E =3E=3E=3E This SF=2Enet email is sponsored by DB2 Express =3E =3E =3E=3E=3E Download DB2 Express C - the FREE version of DB2 expre= ss = =3E and take =3E =3E =3E=3E=3E control of your XML=2E No limits=2E Just data=2E Click= to get it now=2E =3E =3E =3E=3E=3E http=3A//sourceforge=2Enet/powerbar/db2/ =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E ------------------------------------------------------= ----- =3E ------------- =3E =3E =3E=3E=3E =3E =3E =3E=3E=3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F =3E =3E =3E=3E=3E Jikesrvm-core mailing list =3E =3E =3E=3E=3E Jikesrvm-core=40lists=2Esourceforge=2Enet =3E =3E =3E=3E=3E https=3A//lists=2Esourceforge=2Enet/lists/listinfo/jik= esrvm-core =3E =3E =3E=3E =3E =3E =3E=3E -- =3E =3E =3E=3E Robin Garner =3E =3E =3E=3E Dept=2E of Computer Science =3E =3E =3E=3E Australian National University =3E =3E =3E=3E http=3A//cs=2Eanu=2Eedu=2Eau/people/Robin=2EGarner/ =3E =3E =3E=3E =3E =3E =3E=3E ---------------------------------------------------------= --- =3E ------------- =3E =3E =3E=3E This SF=2Enet email is sponsored by DB2 Express =3E =3E =3E=3E Download DB2 Express C - the FREE version of DB2 express = =3E and take =3E =3E =3E=3E control of your XML=2E No limits=2E Just data=2E Click to= get it now=2E =3E =3E =3E=3E http=3A//sourceforge=2Enet/powerbar/db2/ =3E =3E =3E=3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F =3E =3E =3E=3E Jikesrvm-core mailing list =3E =3E =3E=3E Jikesrvm-core=40lists=2Esourceforge=2Enet =3E =3E =3E=3E https=3A//lists=2Esourceforge=2Enet/lists/listinfo/jikesr= vm-core =3E =3E =3E=3E =3E =3E =3E =3E =3E =3E ------------------------------------------------------------= - =3E ------------ =3E =3E =3E This SF=2Enet email is sponsored by DB2 Express =3E =3E =3E Download DB2 Express C - the FREE version of DB2 express and= take =3E =3E =3E control of your XML=2E No limits=2E Just data=2E Click to ge= t it now=2E =3E =3E =3E http=3A//sourceforge=2Enet/powerbar/db2/ =3E =3E =3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F =3E =3E =3E Jikesrvm-core mailing list =3E =3E =3E Jikesrvm-core=40lists=2Esourceforge=2Enet =3E =3E =3E https=3A//lists=2Esourceforge=2Enet/lists/listinfo/jikesrvm-= core =3E =3E =3E =3E =3E =3E -- =3E =3E Robin Garner =3E =3E Dept=2E of Computer Science =3E =3E Australian National University =3E =3E http=3A//cs=2Eanu=2Eedu=2Eau/people/Robin=2EGarner/ =3E =3E =3E =3E --------------------------------------------------------------- =3E ---------- =3E =3E This SF=2Enet email is sponsored by DB2 Express =3E =3E Download DB2 Express C - the FREE version of DB2 express and tak= e =3E =3E control of your XML=2E No limits=2E Just data=2E Click to get it= now=2E =3E =3E http=3A//sourceforge=2Enet/powerbar/db2/ =3E =3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F =3E =3E Jikesrvm-core mailing list =3E =3E Jikesrvm-core=40lists=2Esourceforge=2Enet =3E =3E https=3A//lists=2Esourceforge=2Enet/lists/listinfo/jikesrvm-core= =3E =3E =3E = =3E ----------------------------------------------------------------- =3E -------- =3E This SF=2Enet email is sponsored by DB2 Express =3E Download DB2 Express C - the FREE version of DB2 express and take =3E control of your XML=2E No limits=2E Just data=2E Click to get it now= =2E =3E http=3A//sourceforge=2Enet/powerbar/db2/ =3E =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F=5F= =3E Jikesrvm-core mailing list =3E Jikesrvm-core=40lists=2Esourceforge=2Enet =3E https=3A//lists=2Esourceforge=2Enet/lists/listinfo/jikesrvm-core =3E |