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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]