From: <dfr...@us...> - 2007-09-25 12:36:54
|
Revision: 13684 http://jikesrvm.svn.sourceforge.net/jikesrvm/?rev=13684&view=rev Author: dframpton-oss Date: 2007-09-25 05:36:50 -0700 (Tue, 25 Sep 2007) Log Message: ----------- Placeholder for poisoning collector. This collector currently extends mark sweep and adds no-op write and read barriers. Modified Paths: -------------- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/MutatorContext.java Added Paths: ----------- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/Poisoned.java rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedCollector.java rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedConstraints.java rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseAdaptivePoisoned.properties rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseBasePoisoned.properties rvmroot/branches/RVM-265-ReadBarriers/build/configs/FastAdaptivePoisoned.properties rvmroot/branches/RVM-265-ReadBarriers/build/configs/FullAdaptivePoisoned.properties Modified: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/MutatorContext.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/MutatorContext.java 2007-09-25 12:11:03 UTC (rev 13683) +++ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/MutatorContext.java 2007-09-25 12:36:50 UTC (rev 13684) @@ -393,8 +393,8 @@ * * @param src The object reference holding the field being read. * @param slot The address of the slot being read. - * @param metaDataA An value that assists the host VM in creating a load - * @param metaDataB An value that assists the host VM in creating a load + * @param metaDataA A value that assists the host VM in creating a load + * @param metaDataB A value that assists the host VM in creating a load * @param mode The context in which the load occurred * @return The reference that was read. */ Added: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/Poisoned.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/Poisoned.java (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/Poisoned.java 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,25 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Common Public License (CPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/cpl1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.mmtk.plan.poisoned; + +import org.mmtk.plan.marksweep.MS; + +import org.vmmagic.pragma.*; + +/** + * This class implements a poisoned collector, that is essentially a test + * case for read and write barriers in the VM. + */ +@Uninterruptible +public class Poisoned extends MS { +} Property changes on: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/Poisoned.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedCollector.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedCollector.java (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedCollector.java 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,53 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Common Public License (CPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/cpl1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.mmtk.plan.poisoned; + +import org.mmtk.plan.marksweep.MSCollector; + +import org.vmmagic.pragma.*; +import org.vmmagic.unboxed.Address; +import org.vmmagic.unboxed.ObjectReference; + +/** + * This class implements a poisoned collector, that is essentially a test + * case for read and write barriers in the VM. + */ +@Uninterruptible +public abstract class PoisonedCollector extends MSCollector { + /**************************************************************************** + * + * Collector read/write barriers. + */ + + /** + * Store an object reference + * + * @param slot The location of the reference + * @param value The value to store + */ + @Inline + public void storeObjectReference(Address slot, ObjectReference value) { + slot.store(value); + } + + /** + * Load an object reference + * + * @param slot The location of the reference + * @param value The value to store + */ + @Inline + public ObjectReference loadObjectReference(Address slot) { + return slot.loadObjectReference(); + } +} Property changes on: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedCollector.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedConstraints.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedConstraints.java (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedConstraints.java 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,30 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Common Public License (CPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/cpl1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.mmtk.plan.poisoned; + +import org.mmtk.plan.marksweep.MSConstraints; +import org.vmmagic.pragma.*; + +/** + * This class and its subclasses communicate to the host VM/Runtime + * any features of the selected plan that it needs to know. This is + * separate from the main Plan/PlanLocal class in order to bypass any + * issues with ordering of static initialization. + */ +@Uninterruptible +public class PoisonedConstraints extends MSConstraints { + public boolean needsWriteBarrier() { return true; } + public boolean needsReadBarrier() { return true; } + public boolean needsStaticWriteBarrier() { return true;} + public boolean needsStaticReadBarrier() { return true; } +} Property changes on: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedConstraints.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,122 @@ +/* + * This file is part of the Jikes RVM project (http://jikesrvm.org). + * + * This file is licensed to You under the Common Public License (CPL); + * You may not use this file except in compliance with the License. You + * may obtain a copy of the License at + * + * http://www.opensource.org/licenses/cpl1.0.php + * + * See the COPYRIGHT.txt file distributed with this work for information + * regarding copyright ownership. + */ +package org.mmtk.plan.poisoned; + +import org.mmtk.plan.marksweep.MSMutator; +import org.mmtk.vm.VM; + +import org.vmmagic.pragma.*; +import org.vmmagic.unboxed.Address; +import org.vmmagic.unboxed.ObjectReference; +import org.vmmagic.unboxed.Offset; + +/** + * This class implements a poisoned collector, that is essentially a test + * case for read and write barriers in the VM. + */ +@Uninterruptible +public abstract class PoisonedMutator extends MSMutator { + + /**************************************************************************** + * + * Write and read barriers. By default do nothing, override if + * appropriate. + */ + + /** + * A new reference is about to be created. Take appropriate write + * barrier actions.<p> + * + * <b>By default do nothing, override if appropriate.</b> + * + * @param src The object into which the new reference will be stored + * @param slot The address into which the new reference will be + * stored. + * @param tgt The target of the new reference + * @param metaDataA A value that assists the host VM in creating a store + * @param metaDataB A value that assists the host VM in creating a store + * @param mode The context in which the store occurred + */ + @Inline + @Override + public void writeBarrier(ObjectReference src, Address slot, ObjectReference tgt, Offset metaDataA, int metaDataB, int mode) { + VM.barriers.performWriteInBarrier(src, slot, tgt, metaDataA, metaDataB, mode); + } + + /** + * Attempt to atomically exchange the value in the given slot + * with the passed replacement value. If a new reference is + * created, we must then take appropriate write barrier actions.<p> + * + * <b>By default do nothing, override if appropriate.</b> + * + * @param src The object into which the new reference will be stored + * @param slot The address into which the new reference will be + * stored. + * @param old The old reference to be swapped out + * @param tgt The target of the new reference + * @param metaDataA A value that assists the host VM in creating a store + * @param metaDataB A value that assists the host VM in creating a store + * @param mode The context in which the store occurred + * @return True if the swap was successful. + */ + @Override + public boolean tryCompareAndSwapWriteBarrier(ObjectReference src, Address slot, ObjectReference old, ObjectReference tgt, + Offset metaDataA, int metaDataB, int mode) { + return VM.barriers.tryCompareAndSwapWriteInBarrier(src, slot, old, tgt, metaDataA, metaDataB, mode); + } + + /** + * A number of references are about to be copied from object + * <code>src</code> to object <code>dst</code> (as in an array + * copy). Thus, <code>dst</code> is the mutated object. Take + * appropriate write barrier actions.<p> + * + * @param src The source of the values to be copied + * @param srcOffset The offset of the first source address, in + * bytes, relative to <code>src</code> (in principle, this could be + * negative). + * @param dst The mutated object, i.e. the destination of the copy. + * @param dstOffset The offset of the first destination address, in + * bytes relative to <code>tgt</code> (in principle, this could be + * negative). + * @param bytes The size of the region being copied, in bytes. + * @return True if the update was performed by the barrier, false if + * left to the caller (always false in this case). + */ + @Override + public boolean writeBarrier(ObjectReference src, Offset srcOffset, ObjectReference dst, Offset dstOffset, int bytes) { + // TODO: Currently, read barriers implies that this is never used, perhaps + // we might want to use it sometime anyway? + if (VM.VERIFY_ASSERTIONS) VM.assertions._assert(false); + return false; + } + + /** + * Read a reference. Take appropriate read barrier action, and + * return the value that was read.<p> This is a <b>substituting<b> + * barrier. The call to this barrier takes the place of a load.<p> + * + * @param src The object reference holding the field being read. + * @param slot The address of the slot being read. + * @param metaDataA A value that assists the host VM in creating a load + * @param metaDataB A value that assists the host VM in creating a load + * @param mode The context in which the load occurred + * @return The reference that was read. + */ + @Inline + @Override + public ObjectReference readBarrier(ObjectReference src, Address slot, Offset metaDataA, int metaDataB, int mode) { + return VM.barriers.performReadInBarrier(src, slot, metaDataA, metaDataB, mode); + } +} Property changes on: rvmroot/branches/RVM-265-ReadBarriers/MMTk/src/org/mmtk/plan/poisoned/PoisonedMutator.java ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseAdaptivePoisoned.properties =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseAdaptivePoisoned.properties (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseAdaptivePoisoned.properties 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,16 @@ +# +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +config.mmtk.plan=org.mmtk.plan.poisoned.Poisoned +config.include.aos=true +config.runtime.compiler=opt +config.default-heapsize.initial=50 Property changes on: rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseAdaptivePoisoned.properties ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseBasePoisoned.properties =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseBasePoisoned.properties (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseBasePoisoned.properties 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,13 @@ +# +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +config.mmtk.plan=org.mmtk.plan.poisoned.Poisoned Property changes on: rvmroot/branches/RVM-265-ReadBarriers/build/configs/BaseBasePoisoned.properties ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/build/configs/FastAdaptivePoisoned.properties =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/build/configs/FastAdaptivePoisoned.properties (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/build/configs/FastAdaptivePoisoned.properties 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,20 @@ +# +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +config.mmtk.plan=org.mmtk.plan.poisoned.Poisoned +config.include.aos=true +config.include.all-classes=true +config.assertions=none +config.default-heapsize.initial=50 +config.runtime.compiler=opt +config.bootimage.compiler=opt +config.bootimage.compiler.args=-X:bc:O2 Property changes on: rvmroot/branches/RVM-265-ReadBarriers/build/configs/FastAdaptivePoisoned.properties ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: rvmroot/branches/RVM-265-ReadBarriers/build/configs/FullAdaptivePoisoned.properties =================================================================== --- rvmroot/branches/RVM-265-ReadBarriers/build/configs/FullAdaptivePoisoned.properties (rev 0) +++ rvmroot/branches/RVM-265-ReadBarriers/build/configs/FullAdaptivePoisoned.properties 2007-09-25 12:36:50 UTC (rev 13684) @@ -0,0 +1,19 @@ +# +# This file is part of the Jikes RVM project (http://jikesrvm.org). +# +# This file is licensed to You under the Common Public License (CPL); +# You may not use this file except in compliance with the License. You +# may obtain a copy of the License at +# +# http://www.opensource.org/licenses/cpl1.0.php +# +# See the COPYRIGHT.txt file distributed with this work for information +# regarding copyright ownership. +# +config.mmtk.plan=org.mmtk.plan.poisoned.Poisoned +config.include.aos=true +config.include.all-classes=true +config.default-heapsize.initial=50 +config.runtime.compiler=opt +config.bootimage.compiler=opt +config.bootimage.compiler.args=-X:bc:O2 Property changes on: rvmroot/branches/RVM-265-ReadBarriers/build/configs/FullAdaptivePoisoned.properties ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |