[vmkit-commits] [vmkit] r85003 - in /vmkit/trunk/mmtk/mmtk-j3: ActivePlan.cpp Assert.cpp Collection.cpp FinalizableProcessor.cpp Lock.cpp Memory.cpp ObjectModel.cpp ReferenceProcessor.cpp RuntimeHelpers.cpp Scanning.cpp Selected.cpp Statistics.cpp SynchronizedCounter.cpp TraceInterface.cpp VM.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sat Oct 24 05:00:00 PDT 2009


Author: geoffray
Date: Sat Oct 24 06:59:59 2009
New Revision: 85003

URL: http://llvm.org/viewvc/llvm-project?rev=85003&view=rev
Log:
Implement runtime functions for MMTk.


Added:
    vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
Modified:
    vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp
    vmkit/trunk/mmtk/mmtk-j3/Assert.cpp
    vmkit/trunk/mmtk/mmtk-j3/Collection.cpp
    vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp
    vmkit/trunk/mmtk/mmtk-j3/Lock.cpp
    vmkit/trunk/mmtk/mmtk-j3/Memory.cpp
    vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp
    vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp
    vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp
    vmkit/trunk/mmtk/mmtk-j3/Selected.cpp
    vmkit/trunk/mmtk/mmtk-j3/Statistics.cpp
    vmkit/trunk/mmtk/mmtk-j3/SynchronizedCounter.cpp
    vmkit/trunk/mmtk/mmtk-j3/TraceInterface.cpp
    vmkit/trunk/mmtk/mmtk-j3/VM.cpp

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ActivePlan.cpp Sat Oct 24 06:59:59 2009
@@ -7,16 +7,32 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "JavaClass.h"
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
-extern "C" JavaObject* Java_org_j3_mmtk_ActivePlan_getNextMutator__ (JavaObject* A) {
-  abort();
+struct ActivePlan {
+  JavaObject obj;
+  mvm::MutatorThread* next;
+};
+
+extern "C" JavaObject* Java_org_j3_mmtk_ActivePlan_getNextMutator__ (ActivePlan* A) {
+  assert(A && "No active plan");
+  
+  if (A->next == 0) A->next = (mvm::MutatorThread*)JavaThread::get()->MyVM->mainThread;
+  else if (A->next->next() != JavaThread::get()->MyVM->mainThread) {
+    A->next = 0;
+    return 0;
+  }
+  else A->next = (mvm::MutatorThread*)A->next->next();
+
+  return (JavaObject*)A->next->MutatorContext;
 }
 
-extern "C" void Java_org_j3_mmtk_ActivePlan_resetMutatorIterator__ (JavaObject* A) {
-  abort();
+extern "C" void Java_org_j3_mmtk_ActivePlan_resetMutatorIterator__ (ActivePlan* A) {
+  A->next = (mvm::MutatorThread*)JavaThread::get()->MyVM->mainThread;
 }
 
-extern "C" void Java_org_j3_mmtk_ActivePlan_collectorCount__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_ActivePlan_collectorCount__ () { JavaThread::get()->printBacktrace(); abort(); }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Assert.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Assert.cpp Sat Oct 24 06:59:59 2009
@@ -8,7 +8,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
-extern "C" void Java_org_j3_mmtk_Assert_dumpStack__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_Assert_dumpStack__ () { JavaThread::get()->printBacktrace(); abort(); }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Collection.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Collection.cpp Sat Oct 24 06:59:59 2009
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
@@ -35,23 +36,23 @@
 }
 
 extern "C" int Java_org_j3_mmtk_Collection_rendezvous__I (JavaObject* C, int where) {
-  abort();
+  return 1;
 }
 
 extern "C" int Java_org_j3_mmtk_Collection_maximumCollectionAttempt__ (JavaObject* C) {
-  abort();
+  return 0;
 }
 
 extern "C" void Java_org_j3_mmtk_Collection_prepareCollector__Lorg_mmtk_plan_CollectorContext_2 (JavaObject* C, JavaObject* CC) {
-  abort();
+  // Nothing to do.
 }
 
 
-extern "C" void Java_org_j3_mmtk_Collection_joinCollection__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_reportPhysicalAllocationFailed__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_triggerAsyncCollection__I () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_noThreadsInGC__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_prepareMutator__Lorg_mmtk_plan_MutatorContext_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_activeGCThreads__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_activeGCThreadOrdinal__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Collection_requestMutatorFlush__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_joinCollection__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_reportPhysicalAllocationFailed__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_triggerAsyncCollection__I () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_noThreadsInGC__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_prepareMutator__Lorg_mmtk_plan_MutatorContext_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_activeGCThreads__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_activeGCThreadOrdinal__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Collection_requestMutatorFlush__ () { JavaThread::get()->printBacktrace(); abort(); }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/FinalizableProcessor.cpp Sat Oct 24 06:59:59 2009
@@ -9,19 +9,20 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
 extern "C" void Java_org_j3_mmtk_FinalizableProcessor_clear__ () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void
 Java_org_j3_mmtk_FinalizableProcessor_forward__Lorg_mmtk_plan_TraceLocal_2Z () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void
 Java_org_j3_mmtk_FinalizableProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Lock.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Lock.cpp Sat Oct 24 06:59:59 2009
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 #include "mvm/Threads/Locks.h"
 
 using namespace jnjvm;
@@ -21,7 +22,7 @@
 extern "C" void Java_org_j3_mmtk_Lock_acquire__(Lock* l) {
   l->spin.acquire();
 }
-extern "C" void Java_org_j3_mmtk_Lock_check__I () { abort(); }
+extern "C" void Java_org_j3_mmtk_Lock_check__I () { JavaThread::get()->printBacktrace(); abort(); }
 
 extern "C" void Java_org_j3_mmtk_Lock_release__(Lock* l) {
   l->spin.release();

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Memory.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Memory.cpp Sat Oct 24 06:59:59 2009
@@ -11,6 +11,7 @@
 
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 extern "C" uintptr_t Java_org_j3_mmtk_Memory_getHeapStartConstant__ () {
@@ -42,7 +43,7 @@
                         -1, 0);
   if (baseAddr == MAP_FAILED) {
     perror("mmap");
-    abort();
+    JavaThread::get()->printBacktrace(); abort();
   }
 
   return 0;
@@ -50,12 +51,12 @@
 
 extern "C" void
 Java_org_j3_mmtk_Memory_mprotect__Lorg_vmmagic_unboxed_Address_2I () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void
 Java_org_j3_mmtk_Memory_munprotect__Lorg_vmmagic_unboxed_Address_2I () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void
@@ -67,10 +68,10 @@
 
 extern "C" void
 Java_org_j3_mmtk_Memory_zeroPages__Lorg_vmmagic_unboxed_Address_2I () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void
 Java_org_j3_mmtk_Memory_dumpMemory__Lorg_vmmagic_unboxed_Address_2II () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ObjectModel.cpp Sat Oct 24 06:59:59 2009
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
@@ -31,24 +32,24 @@
   return obj;
 }
 
-extern "C" void Java_org_j3_mmtk_ObjectModel_copy__Lorg_vmmagic_unboxed_ObjectReference_2I () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_copyTo__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getReferenceWhenCopiedTo__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getObjectEndAddress__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getSizeWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getAlignWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getAlignOffsetWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getCurrentSize__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getNextObject__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getObjectFromStartAddress__Lorg_vmmagic_unboxed_Address_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getTypeDescriptor__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_getArrayLength__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_isArray__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_isPrimitiveArray__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_attemptAvailableBits__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Word_2Lorg_vmmagic_unboxed_Word_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_prepareAvailableBits__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_writeAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2B () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_readAvailableByte__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_refToAddress__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_isAcyclic__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_ObjectModel_dumpObject__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
+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(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getObjectEndAddress__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getSizeWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getAlignWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getAlignOffsetWhenCopied__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getCurrentSize__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getNextObject__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getObjectFromStartAddress__Lorg_vmmagic_unboxed_Address_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getTypeDescriptor__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_getArrayLength__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ObjectModel_isArray__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+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=85003&r1=85002&r2=85003&view=diff

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/ReferenceProcessor.cpp Sat Oct 24 06:59:59 2009
@@ -9,13 +9,14 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
 extern "C" void Java_org_j3_mmtk_ReferenceProcessor_scan__Lorg_mmtk_plan_TraceLocal_2Z () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
-extern "C" void Java_org_j3_mmtk_ReferenceProcessor_forward__Lorg_mmtk_plan_TraceLocal_2Z () { abort(); }
-extern "C" void Java_org_j3_mmtk_ReferenceProcessor_clear__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_ReferenceProcessor_countWaitingReferences__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_ReferenceProcessor_forward__Lorg_mmtk_plan_TraceLocal_2Z () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ReferenceProcessor_clear__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_ReferenceProcessor_countWaitingReferences__ () { JavaThread::get()->printBacktrace(); abort(); }

Added: vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp?rev=85003&view=auto

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp (added)
+++ vmkit/trunk/mmtk/mmtk-j3/RuntimeHelpers.cpp Sat Oct 24 06:59:59 2009
@@ -0,0 +1,22 @@
+//===-- RuntimeHelpers.cpp - Implement rt.jar functions needed by MMTk  --===//
+//
+//                            The VMKit project
+//
+// This file is distributed under the University of Illinois Open Source 
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "JavaArray.h"
+#include "JavaClass.h"
+#include "JavaString.h"
+
+using namespace jnjvm;
+
+extern "C" uint16_t MMTkCharAt(JavaString* str, uint32_t index) {
+  return str->value->elements[index];
+}
+
+extern "C" JavaObject* MMTkGetClass(JavaObject* obj) {
+  return obj->getClass()->delegatee[0];
+}

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Scanning.cpp Sat Oct 24 06:59:59 2009
@@ -8,26 +8,27 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
 extern "C" void Java_org_j3_mmtk_Scanning_computeThreadRoots__Lorg_mmtk_plan_TraceLocal_2 () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void Java_org_j3_mmtk_Scanning_computeGlobalRoots__Lorg_mmtk_plan_TraceLocal_2 () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void Java_org_j3_mmtk_Scanning_computeStaticRoots__Lorg_mmtk_plan_TraceLocal_2 () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
 extern "C" void Java_org_j3_mmtk_Scanning_resetThreadCounter__ () {
-  abort();
+  JavaThread::get()->printBacktrace(); abort();
 }
 
-extern "C" void Java_org_j3_mmtk_Scanning_scanObject__Lorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_Scanning_specializedScanObject__ILorg_mmtk_plan_TransitiveClosure_2Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_Scanning_precopyChildren__Lorg_mmtk_plan_TraceLocal_2Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_Scanning_preCopyGCInstances__Lorg_mmtk_plan_TraceLocal_2 () { abort(); }
+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(); }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Selected.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Selected.cpp Sat Oct 24 06:59:59 2009
@@ -11,15 +11,14 @@
 #include "JavaClass.h"
 #include "JavaObject.h"
 #include "JavaThread.h"
+#include "MutatorThread.h"
 
 using namespace jnjvm;
 
 extern "C" JavaObject* Java_org_j3_config_Selected_00024Collector_get__() {
-  abort();
-  return 0;
+  return (JavaObject*)mvm::MutatorThread::get()->CollectorContext;
 }
 
 extern "C" JavaObject* Java_org_j3_config_Selected_00024Mutator_get__() {
-  abort();
-  return 0;
+  return (JavaObject*)mvm::MutatorThread::get()->MutatorContext;
 }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/Statistics.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/Statistics.cpp Sat Oct 24 06:59:59 2009
@@ -8,6 +8,7 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
@@ -19,7 +20,7 @@
   return 0;
 }
 
-extern "C" void Java_org_j3_mmtk_Statistics_getCollectionCount__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Statistics_nanoTime__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Statistics_perfCtrReadCycles__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_Statistics_perfCtrReadMetric__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_Statistics_getCollectionCount__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Statistics_nanoTime__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Statistics_perfCtrReadCycles__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_Statistics_perfCtrReadMetric__ () { JavaThread::get()->printBacktrace(); abort(); }

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/SynchronizedCounter.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/SynchronizedCounter.cpp Sat Oct 24 06:59:59 2009
@@ -9,9 +9,10 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
-extern "C" void Java_org_j3_mmtk_SynchronizedCounter_reset__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_SynchronizedCounter_increment__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_SynchronizedCounter_reset__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_SynchronizedCounter_increment__ () { JavaThread::get()->printBacktrace(); abort(); }
 

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/TraceInterface.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/TraceInterface.cpp Sat Oct 24 06:59:59 2009
@@ -8,22 +8,23 @@
 //===----------------------------------------------------------------------===//
 
 #include "JavaObject.h"
+#include "JavaThread.h"
 
 using namespace jnjvm;
 
-extern "C" void Java_org_j3_mmtk_TraceInterface_gcEnabled__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_adjustSlotOffset__ZLorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_skipOwnFramesAndDump__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_updateDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_setDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Word_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_setLink__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_updateTime__Lorg_vmmagic_unboxed_Word_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getOID__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getLink__Lorg_vmmagic_unboxed_ObjectReference_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getBootImageLink__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getOID__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_setOID__Lorg_vmmagic_unboxed_Word_2 () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getHeaderSize__ () { abort(); }
-extern "C" void Java_org_j3_mmtk_TraceInterface_getHeaderEndOffset__ () { abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_gcEnabled__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_adjustSlotOffset__ZLorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Address_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_skipOwnFramesAndDump__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_updateDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_setDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_Word_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_setLink__Lorg_vmmagic_unboxed_ObjectReference_2Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_updateTime__Lorg_vmmagic_unboxed_Word_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getOID__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getDeathTime__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getLink__Lorg_vmmagic_unboxed_ObjectReference_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getBootImageLink__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getOID__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_setOID__Lorg_vmmagic_unboxed_Word_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getHeaderSize__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_mmtk_TraceInterface_getHeaderEndOffset__ () { JavaThread::get()->printBacktrace(); abort(); }
 

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

==============================================================================
--- vmkit/trunk/mmtk/mmtk-j3/VM.cpp (original)
+++ vmkit/trunk/mmtk/mmtk-j3/VM.cpp Sat Oct 24 06:59:59 2009
@@ -12,16 +12,16 @@
 
 using namespace jnjvm;
 
-extern "C" void Java_org_j3_runtime_VM_sysWrite__Lorg_vmmagic_unboxed_Extent_2 () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWrite__Lorg_vmmagic_unboxed_Address_2 () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWrite__F () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWrite__I () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWrite__Ljava_lang_String_2 () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWriteln__ () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysWriteln__Ljava_lang_String_2 () { abort(); }
-extern "C" void Java_org_j3_runtime_VM__1assert__ZLjava_lang_String_2 () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysExit__I () { abort(); }
-extern "C" void Java_org_j3_runtime_VM_sysFail__Ljava_lang_String_2 () { abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWrite__Lorg_vmmagic_unboxed_Extent_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWrite__Lorg_vmmagic_unboxed_Address_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWrite__F () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWrite__I () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWrite__Ljava_lang_String_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWriteln__ () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysWriteln__Ljava_lang_String_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM__1assert__ZLjava_lang_String_2 () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysExit__I () { JavaThread::get()->printBacktrace(); abort(); }
+extern "C" void Java_org_j3_runtime_VM_sysFail__Ljava_lang_String_2 () { JavaThread::get()->printBacktrace(); abort(); }
 
 extern "C" void Java_org_j3_runtime_VM__1assert__Z (bool cond) {
   





More information about the vmkit-commits mailing list