[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