harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Geir Magnusson Jr." <g...@pobox.com>
Subject Re: [DRLVM][GC] first generational version of GCv5 is submitted
Date Fri, 06 Oct 2006 13:41:01 GMT


Xiao-Feng Li wrote:
> The submitted revision is downloadable in JIRA-1428 at:
> http://issues.apache.org/jira/secure/attachment/12342430/gcv5-r0.10.zip
> 

Nice!  w00t!

> Attached in this email is the gc.xml file I am using that replaces
> existing one for building gc.

Please attach that to the JIRA as well.  I can't wait to try this...

> 
> Below is the submission description:
> 
> Attached file gcv5-r0.10.zip is first version of the generational
> mark-compaction GC for GCv5, which combines previous two submitted
> collectors as planned. That is, a trace-forward collector for minor
> collection and a mark-compaction collector for major collection. An
> additon of a copying algorithm is also developed that copies nursery
> live objects to mature space during a major collection.
> 
> This revision has subtantial improvement in threading part. Although
> it's still single threaded collector, the framework for multithreading
> is ready. Basically, it has mutators and collectors to model the
> application threads and collection threads.
> 
> A major design concept in this revision that was not made very clear
> in previous submissions is "space".  "GC" is a concept of a full (or
> standalone) garbage collector design. One GC can have multiple spaces,
> each of which can employ different "collection policy". With this
> design idea in mind, the previous trace-forward GC is adapted to be
> the collection policy for the nursery space, and the mark-compaction
> GC is adapted to be the collection policy of the mature space.
> 
> As an embodiment of the design idea, GCv5 eliminates the global gc
> variable in existing Harmony GC, and different space managements only
> need to know a general gc data structure, instead of the generational
> gc structure.
> 
> This revision has been tested on Windows with SPECJVM98. As the first
> actual generational GC, any comments (or questions) are welcome!
> 
> 
> -xiaofeng
> 
>> [DRLVM] first batch of files for GCv5, a trace-forward copying collector
>> ------------------------------------------------------------------------
>>
>>                 Key: HARMONY-1428
>>                 URL: http://issues.apache.org/jira/browse/HARMONY-1428
>>             Project: Harmony
>>          Issue Type: Improvement
>>          Components: DRLVM
>>         Environment: These files were only tested on Windows with 
>> VS.NET 2003.
>>            Reporter: Xiao-Feng Li
>>         Assigned To: weldon washburn
>>         Attachments: gc_v5.001.zip, GCv5-mc001.zip, gcv5-r0.10.zip
>>
>>
>> This archive has a couple of files implementing an early version of a 
>> trace-forward copying collector for GCv5. It's only a starter with 
>> very basic functionalities. It is a generational GC reqiures write 
>> barrier implemented in JIT. It was tested with JET, and ran 
>> SPECJBB2000 and SPECJVM98.
>> The algorithm is depth-first tracing of From-space, and forwarding 
>> live objects to To-space (It can forward part of the From-space). The 
>> To-space has no real management except for the accomodation of 
>> forwarded objects and large objects. So the To-space is going to be 
>> replaced by a mark-compaction GC, and the large objects will be 
>> managed by a LOS GC.
>> In order to minimize the changes to other components of DRLVM, the 
>> codes here comply with the original contract between GCv4 and other 
>> components. I also borrowed some routine code from GCv4 to avoid 
>> repetitive labor work.
>> GCv5 is under active development, so please expect quick and big 
>> changes to this submitted code base. I will submit new codes from time 
>> to time when they are worth a submission. Any comments or codes are 
>> more than welcome.
> 
> -- 
> This message is automatically generated by JIRA.
> -
> If you think it was sent incorrectly contact one of the
> administrators:
> http://issues.apache.org/jira/secure/Administrators.jspa
> -
> For more information on JIRA, see: http://www.atlassian.com/software/jira
> 
> 
> ------------------------------------------------------------------------
> 
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!--
>     Copyright 2005-2006 The Apache Software Foundation or its licensors, as applicable.
>   
>     Licensed under the Apache License, Version 2.0 (the "License");
>     you may not use this file except in compliance with the License.
>     You may obtain a copy of the License at
>   
>        http://www.apache.org/licenses/LICENSE-2.0
>   
>     Unless required by applicable law or agreed to in writing, software
>     distributed under the License is distributed on an "AS IS" BASIS,
>     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
>     See the License for the specific language governing permissions and
>     limitations under the License.
> -->
> <!--
> Author: Marina V. Goldburt, Dmitry B. Yershov
> Version: $Revision: 1.1.1.1 $
> -->
> <!--
>     This is build descriptor for the component "vm.gc".
> 
>     Please refer to make/components/README.txt for details about the component
>     build descriptor structure.
>   -->
> 
> <project name="vm.gc">
>     <target name="init" depends="common_vm">
>         <property name="build.depends" value="extra.apr,vm.vmcore" />
>         <property name="outtype" value="shared" />
>         <property name="libname" value="gc" />
>         <property name="src" location="${build.vm.home}" />
> 
>         <compiler id="cpp.compiler" extends="common.cpp.compiler">
>             <includepath>
>                 <pathelement location="${extra.apr.includes}" />
>             </includepath>
> 
>             <includepath>
>                 <dirset dir="${build.vm.home}">
>                     <include name="include" />
>                     <include name="vmcore/include" />
>                     <include name="vm/interface" />
>                     <select os="win">
>                         <include name="vmcore/src/util/win/include" />
>                     </select>
>                     <select os="lnx">
>                         <include name="vmcore/src/util/linux/include" />
>                     </select>
>                 </dirset>
>             </includepath>
> 
>             <fileset dir="${src}/gc/src">
>             	<include name="common/*.cpp" />
>             	<include name="gen/*.cpp" />
>             	<include name="thread/*.cpp" />
>             	<include name="mark_sweep/*.cpp" />
>             	<include name="trace_forward/*.cpp" />
>               <include name="mark_compact/*.cpp" />
>             	<include name="verify/*.cpp" />
>             </fileset>
> 
>             <defineset define="BUILDING_GC" />
> 
>             <select os="win">
>                 <defineset define="_USRDLL" />
>             </select>
> 
>             <select os="win" cfg="release" cxx="icl">
>                 <compilerarg value="/Qip" />
>             </select>
>         </compiler>
> 
>         <select os="win" arch="ipf">
>             <fileset id="asm.fileset"
>                      dir="${build.vm.home}/gc/src">
>                 <include name="ini_ipf_low_level.asm" />
>             </fileset>
>         </select>
> 
>         <linker id="linker" extends="common.linker">
>             <select os="win">
>                 <syslibset libs="advapi32,odbc32,ws2_32,mswsock" />
>             </select>
> 
>             <select os="win" arch="ipf">
>                 <syslibset libs="AdvAPI32" />
>             </select>
> 
>             <select os="win" cfg="debug">
>                 <linkerarg value="/NODEFAULTLIB:libcmtd.lib" />
>                 <syslibset libs="msvcrtd" />
>             </select>
> 
>             <libset libs="${vm.vmcore.lib}" dir="${vm.vmcore.libdir}" />
> 
>             <select os="lnx">
>                 <linkerarg value="-Bsymbolic" />
>             </select>
>         </linker>
>     </target>
> </project>
> 
> 
> ------------------------------------------------------------------------
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message