[vmkit-commits] [vmkit] r120475 - in /vmkit/trunk/mmtk: java/src/org/j3/mmtk/Barriers.java java/src/org/mmtk/policy/immix/ImmixConstants.java mmtk-j3/Collection.cpp mmtk-j3/ObjectModel.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue Nov 30 14:22:46 PST 2010
Author: geoffray
Date: Tue Nov 30 16:22:46 2010
New Revision: 120475
URL: http://llvm.org/viewvc/llvm-project?rev=120475&view=rev
Log:
Add support for the non-generational version of the Immix collector.
Modified:
vmkit/trunk/mmtk/java/src/org/j3/mmtk/Barriers.java
vmkit/trunk/mmtk/java/src/org/mmtk/policy/immix/ImmixConstants.java
vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
Modified: vmkit/trunk/mmtk/java/src/org/j3/mmtk/Barriers.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/src/org/j3/mmtk/Barriers.java?rev=120475&r1=120474&r2=120475&view=diff
==============================================================================
--- vmkit/trunk/mmtk/java/src/org/j3/mmtk/Barriers.java (original)
+++ vmkit/trunk/mmtk/java/src/org/j3/mmtk/Barriers.java Tue Nov 30 16:22:46 2010
@@ -599,9 +599,13 @@
@UninterruptibleNoWarn
@Override
public final void objectArrayStoreNoGCBarrier(Object[] dst, int index, Object value) {
- Address base = ObjectReference.fromObject(dst).toAddress();
+ dst[index] = value;
+ // TODO(ngeoffray): I don't think this is needed, the previous statement should not have
+ // had a GC barrier.
+ //
+ // Address base = ObjectReference.fromObject(dst).toAddress();
// Add 3 for the header, the class, and the length.
- Address slot = base.plus(Offset.fromIntZeroExtend((index + 3) << LOG_BYTES_IN_ADDRESS));
- VM.activePlan.global().storeObjectReference(slot, ObjectReference.fromObject(value));
+ // Address slot = base.plus(Offset.fromIntZeroExtend((index + 3) << LOG_BYTES_IN_ADDRESS));
+ // VM.activePlan.global().storeObjectReference(slot, ObjectReference.fromObject(value));
}
}
Modified: vmkit/trunk/mmtk/java/src/org/mmtk/policy/immix/ImmixConstants.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/src/org/mmtk/policy/immix/ImmixConstants.java?rev=120475&r1=120474&r2=120475&view=diff
==============================================================================
--- vmkit/trunk/mmtk/java/src/org/mmtk/policy/immix/ImmixConstants.java (original)
+++ vmkit/trunk/mmtk/java/src/org/mmtk/policy/immix/ImmixConstants.java Tue Nov 30 16:22:46 2010
@@ -21,7 +21,10 @@
import org.vmmagic.unboxed.Word;
public class ImmixConstants {
- public static final boolean BUILD_FOR_STICKYIMMIX = Plan.NEEDS_LOG_BIT_IN_HEADER;
+ // TODO(ngeoffray): Inform MMTk developers that using Plan here is not wise
+ // due to clinit order.
+ // public static final boolean BUILD_FOR_STICKYIMMIX = Plan.NEEDS_LOG_BIT_IN_HEADER;
+ public static final boolean BUILD_FOR_STICKYIMMIX = VM.activePlan.constraints().needsLogBitInHeader();
/* start temporary experimental constants --- should not be allowed to lurk longer than necessary */
public static final int TMP_MIN_SPILL_THRESHOLD = 2;
Modified: vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Collection.cpp?rev=120475&r1=120474&r2=120475&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Tue Nov 30 16:22:46 2010
@@ -99,12 +99,13 @@
extern "C" void Java_org_j3_mmtk_Collection_prepareMutator__Lorg_mmtk_plan_MutatorContext_2 (MMTkObject* C, MMTkObject* MC) {
}
+extern "C" int32_t Java_org_j3_mmtk_Collection_activeGCThreads__ (MMTkObject* C) { return 1; }
+extern "C" int32_t Java_org_j3_mmtk_Collection_activeGCThreadOrdinal__ (MMTkObject* C) { return 1; }
+
extern "C" void Java_org_j3_mmtk_Collection_reportPhysicalAllocationFailed__ (MMTkObject* C) { UNIMPLEMENTED(); }
extern "C" void Java_org_j3_mmtk_Collection_triggerAsyncCollection__I (MMTkObject* C, sint32 val) { UNIMPLEMENTED(); }
extern "C" void Java_org_j3_mmtk_Collection_noThreadsInGC__ (MMTkObject* C) { UNIMPLEMENTED(); }
-extern "C" void Java_org_j3_mmtk_Collection_activeGCThreads__ (MMTkObject* C) { UNIMPLEMENTED(); }
-extern "C" void Java_org_j3_mmtk_Collection_activeGCThreadOrdinal__ (MMTkObject* C) { UNIMPLEMENTED(); }
extern "C" void Java_org_j3_mmtk_Collection_requestMutatorFlush__ (MMTkObject* C) { UNIMPLEMENTED(); }
} // namespace mmtk
Modified: vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp?rev=120475&r1=120474&r2=120475&view=diff
==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Tue Nov 30 16:22:46 2010
@@ -99,8 +99,12 @@
extern "C" void Java_org_j3_mmtk_ObjectModel_getReferenceWhenCopiedTo__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 (
MMTkObject* OM, uintptr_t from, uintptr_t to) { UNIMPLEMENTED(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getObjectEndAddress__Lorg_vmmagic_unboxed_ObjectReference_2 (
- MMTkObject* OM, uintptr_t object) { UNIMPLEMENTED(); }
+extern "C" uintptr_t Java_org_j3_mmtk_ObjectModel_getObjectEndAddress__Lorg_vmmagic_unboxed_ObjectReference_2 (
+ MMTkObject* OM, gc* object) {
+ size_t size = mvm::Thread::get()->MyVM->getObjectSize(object);
+ size = llvm::RoundUpToAlignment(size, sizeof(void*));
+ return reinterpret_cast<uintptr_t>(object) + size;
+}
extern "C" void Java_org_j3_mmtk_ObjectModel_getSizeWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 (
MMTkObject* OM, uintptr_t object) { UNIMPLEMENTED(); }
More information about the vmkit-commits
mailing list