[vmkit-commits] [vmkit] r85227 - in /vmkit/trunk/mmtk: java/src/org/j3/mmtk/ReferenceProcessor.java mmtk-j3/FinalizableProcessor.cpp mmtk-j3/ObjectModel.cpp mmtk-j3/ReferenceProcessor.cpp mmtk-j3/Scanning.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Oct 27 04:32:03 PDT 2009


Author: geoffray
Date: Tue Oct 27 06:32:02 2009
New Revision: 85227

URL: http://llvm.org/viewvc/llvm-project?rev=85227&view=rev
Log:
Continue implementing some functions, now reference and finalization
scanning.


Modified:
    vmkit/trunk/mmtk/java/src/org/j3/mmtk/ReferenceProcessor.java
    vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp
    vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
    vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp
    vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp

Modified: vmkit/trunk/mmtk/java/src/org/j3/mmtk/ReferenceProcessor.java
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/java/src/org/j3/mmtk/ReferenceProcessor.java?rev=85227&r1=85226&r2=85227&view=diff

==============================================================================
--- vmkit/trunk/mmtk/java/src/org/j3/mmtk/ReferenceProcessor.java (original)
+++ vmkit/trunk/mmtk/java/src/org/j3/mmtk/ReferenceProcessor.java Tue Oct 27 06:32:02 2009
@@ -34,9 +34,11 @@
     new ReferenceProcessor(Semantics.PHANTOM);
   
   private final Semantics semantics;
+  private int SemanticsNum;
 
   private ReferenceProcessor(Semantics semantics) {
     this.semantics = semantics;
+    SemanticsNum = semantics.ordinal();
   }
   
   /** 

Modified: vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp?rev=85227&r1=85226&r2=85227&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp Tue Oct 27 06:32:02 2009
@@ -23,6 +23,9 @@
 }
 
 extern "C" void
-Java_org_j3_mmtk_FinalizableProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z () {
-  JavaThread::get()->printBacktrace(); abort();
+Java_org_j3_mmtk_FinalizableProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z (JavaObject* FP, JavaObject* TL, uint8_t nursery) {
+  assert(mvm::Collector::TraceLocal == (uintptr_t)TL && "Mismatch in trace local");
+  
+  mvm::Thread* th = mvm::Thread::get();
+  th->MyVM->scanFinalizationQueue();
 }

Modified: vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp?rev=85227&r1=85226&r2=85227&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Tue Oct 27 06:32:02 2009
@@ -32,6 +32,26 @@
   return obj;
 }
 
+extern "C" JavaObject* Java_org_j3_mmtk_ObjectModel_refToAddress__Lorg_vmmagic_unboxed_ObjectReference_2 (JavaObject* OM, JavaObject* obj) {
+  return obj;
+}
+
+extern "C" uint8_t Java_org_j3_mmtk_ObjectModel_readAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2 (JavaObject* OM, JavaObject* obj) {
+#if defined(__PPC__)
+  return ((uint8_t*)obj)[7];
+#else
+  return ((uint8_t*)obj)[4];
+#endif
+}
+
+extern "C" void Java_org_j3_mmtk_ObjectModel_writeAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2B (JavaObject* OM, JavaObject* obj, uint8_t val) {
+#if defined(__PPC__)
+  ((uint8_t*)obj)[7] = val;
+#else
+  ((uint8_t*)obj)[4] = val;
+#endif
+}
+
 extern "C" void Java_org_j3_mmtk_ObjectModel_copy__Lorg_vmmagic_unboxed_ObjectReference_2I () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_copyTo__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_getReferenceWhenCopiedTo__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { JavaThread::get()->printBacktrace(); abort(); }
@@ -48,8 +68,5 @@
 extern "C" void Java_org_j3_mmtk_ObjectModel_isPrimitiveArray__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_attemptAvailableBits__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Word_2Lorg_vmmagic_unboxed_Word_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_prepareAvailableBits__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_writeAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2B () { JavaThread::get()->printBacktrace(); abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_readAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_refToAddress__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_isAcyclic__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_ObjectModel_dumpObject__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }

Modified: vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp?rev=85227&r1=85226&r2=85227&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp Tue Oct 27 06:32:02 2009
@@ -13,8 +13,25 @@
 
 using namespace jnjvm;
 
-extern "C" void Java_org_j3_mmtk_ReferenceProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z () {
-  JavaThread::get()->printBacktrace(); abort();
+struct ReferenceProcessor {
+  JavaObject obj;
+  JavaObject* semantics;
+  uint32_t ordinal;
+};
+
+extern "C" void Java_org_j3_mmtk_ReferenceProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z (ReferenceProcessor* RP, JavaObject* TL, uint8_t nursery) {
+  assert(mvm::Collector::TraceLocal == (uintptr_t)TL && "Mismatch in trace local");
+  
+  mvm::Thread* th = mvm::Thread::get();
+  uint32_t val = RP->ordinal;
+
+  if (val == 0)
+    th->MyVM->scanSoftReferencesQueue();
+  else if (val == 1)
+    th->MyVM->scanWeakReferencesQueue();
+  else if (val == 2)
+    th->MyVM->scanPhantomReferencesQueue();
+
 }
 
 extern "C" void Java_org_j3_mmtk_ReferenceProcessor_forward__Lorg_mmtk_plan_TraceLocal_2Z () { JavaThread::get()->printBacktrace(); abort(); }

Modified: vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp?rev=85227&r1=85226&r2=85227&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp Tue Oct 27 06:32:02 2009
@@ -37,15 +37,19 @@
   } while (tcur != th);
 }
 
-extern "C" void Java_org_j3_mmtk_Scanning_computeStaticRoots__Lorg_mmtk_plan_TraceLocal_2 () {
-  JavaThread::get()->printBacktrace(); abort();
+extern "C" void Java_org_j3_mmtk_Scanning_computeStaticRoots__Lorg_mmtk_plan_TraceLocal_2 (JavaObject* Scanning, JavaObject* TL) {
+  // Nothing to do.
 }
 
-extern "C" void Java_org_j3_mmtk_Scanning_resetThreadCounter__ () {
-  JavaThread::get()->printBacktrace(); abort();
+extern "C" void Java_org_j3_mmtk_Scanning_resetThreadCounter__ (JavaObject* Scanning) {
+  // Nothing to do.
+}
+
+extern "C" void Java_org_j3_mmtk_Scanning_specializedScanObject__ILorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 (JavaObject* Scanning, uint32_t id, JavaObject* TC, JavaObject* obj) {
+  assert(mvm::Collector::TraceLocal == (uintptr_t)TC && "Mismatch in trace local");
+  obj->tracer();
 }
 
 extern "C" void Java_org_j3_mmtk_Scanning_scanObject__Lorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
-extern "C" void Java_org_j3_mmtk_Scanning_specializedScanObject__ILorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_Scanning_precopyChildren__Lorg_mmtk_plan_TraceLocal_2Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
 extern "C" void Java_org_j3_mmtk_Scanning_preCopyGCInstances__Lorg_mmtk_plan_TraceLocal_2 () { JavaThread::get()->printBacktrace(); abort(); }





More information about the vmkit-commits mailing list