[vmkit-commits] [vmkit] r108836 - in /vmkit/trunk: include/j3/J3Intrinsics.h include/j3/JavaAOTCompiler.h lib/J3/Compiler/J3Intrinsics.cpp lib/J3/Compiler/JavaAOTCompiler.cpp lib/J3/LLVMRuntime/Makefile lib/J3/LLVMRuntime/runtime-boehm.ll lib/J3/LLVMRuntime/runtime-multi-mmap.ll lib/J3/LLVMRuntime/runtime-single-mmap.ll lib/J3/VMCore/JavaClass.cpp lib/J3/VMCore/VirtualTables.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Tue Jul 20 07:32:37 PDT 2010


Author: geoffray
Date: Tue Jul 20 09:32:37 2010
New Revision: 108836

URL: http://llvm.org/viewvc/llvm-project?rev=108836&view=rev
Log:
Cleanup the tracers and remove them from the compiler intrinsics: the compilers do not use
them anymore.


Removed:
    vmkit/trunk/lib/J3/LLVMRuntime/runtime-boehm.ll
    vmkit/trunk/lib/J3/LLVMRuntime/runtime-multi-mmap.ll
    vmkit/trunk/lib/J3/LLVMRuntime/runtime-single-mmap.ll
Modified:
    vmkit/trunk/include/j3/J3Intrinsics.h
    vmkit/trunk/include/j3/JavaAOTCompiler.h
    vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp
    vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/J3/LLVMRuntime/Makefile
    vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
    vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp

Modified: vmkit/trunk/include/j3/J3Intrinsics.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/J3Intrinsics.h?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/include/j3/J3Intrinsics.h (original)
+++ vmkit/trunk/include/j3/J3Intrinsics.h Tue Jul 20 09:32:37 2010
@@ -48,12 +48,6 @@
   const llvm::Type* JnjvmType;
 #endif
   
-  llvm::Function* EmptyTracerFunction;
-  llvm::Function* JavaObjectTracerFunction;
-  llvm::Function* JavaArrayTracerFunction;
-  llvm::Function* ArrayObjectTracerFunction;
-  llvm::Function* RegularObjectTracerFunction;
-  
   llvm::Function* StartJNIFunction;
   llvm::Function* EndJNIFunction;
   llvm::Function* InterfaceLookupFunction;

Modified: vmkit/trunk/include/j3/JavaAOTCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/j3/JavaAOTCompiler.h?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/include/j3/JavaAOTCompiler.h (original)
+++ vmkit/trunk/include/j3/JavaAOTCompiler.h Tue Jul 20 09:32:37 2010
@@ -169,6 +169,9 @@
   llvm::Function* StaticInitializer;
   llvm::Function* ObjectPrinter;
   llvm::Function* Callback;
+  llvm::Function* ArrayObjectTracer;
+  llvm::Function* RegularObjectTracer;
+  llvm::Function* JavaObjectTracer;
   
   bool generateStubs;
   bool assumeCompiled;

Modified: vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/J3Intrinsics.cpp Tue Jul 20 09:32:37 2010
@@ -241,12 +241,6 @@
   ServiceCallStopFunction = module->getFunction("j3ServiceCallStop");
 #endif
 
-  JavaObjectTracerFunction = module->getFunction("JavaObjectTracer");
-  EmptyTracerFunction = module->getFunction("EmptyTracer");
-  JavaArrayTracerFunction = module->getFunction("JavaArrayTracer");
-  ArrayObjectTracerFunction = module->getFunction("ArrayObjectTracer");
-  RegularObjectTracerFunction = module->getFunction("RegularObjectTracer");
-
 #ifndef WITHOUT_VTABLE
   VirtualLookupFunction = module->getFunction("j3VirtualTableLookup");
 #endif

Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Tue Jul 20 09:32:37 2010
@@ -1398,12 +1398,12 @@
   Function* Tracer = 0;
   if (classDef->isArray()) {
     if (classDef->asArrayClass()->baseClass()->isPrimitive()) {
-      Tracer = JavaIntrinsics.JavaArrayTracerFunction;
+      Tracer = JavaObjectTracer;
     } else {
-      Tracer = JavaIntrinsics.ArrayObjectTracerFunction;
+      Tracer = ArrayObjectTracer;
     }
   } else if (classDef->isClass()) {
-    Tracer = JavaIntrinsics.RegularObjectTracerFunction;
+    Tracer = RegularObjectTracer;
   }
 
   Elemts.push_back(Tracer ? 
@@ -1630,7 +1630,17 @@
   FTy = FunctionType::get(Type::getVoidTy(getLLVMContext()), llvmArgs, false);
   ObjectPrinter = Function::Create(FTy, GlobalValue::ExternalLinkage,
                                    "printJavaObject", getLLVMModule());
-
+  
+  ArrayObjectTracer = Function::Create(FTy, GlobalValue::ExternalLinkage,
+                                       "ArrayObjectTracer", getLLVMModule());
+  
+  RegularObjectTracer = Function::Create(FTy,
+                                         GlobalValue::ExternalLinkage,
+                                         "RegularObjectTracer",
+                                         getLLVMModule());
+  
+  JavaObjectTracer = Function::Create(FTy, GlobalValue::ExternalLinkage,
+                                      "JavaObjectTracer", getLLVMModule());
 }
 
 void JavaAOTCompiler::printStats() {

Modified: vmkit/trunk/lib/J3/LLVMRuntime/Makefile
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/Makefile?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/Makefile (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/Makefile Tue Jul 20 09:32:37 2010
@@ -23,19 +23,7 @@
 endif
 
 ifeq ($(SERVICE_BUILD), 1)
-VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-service.ll $(PROJ_SRC_DIR)/runtime-isolate.ll $(PROJ_SRC_DIR)/runtime-single-mmap.ll
-else
-ifeq ($(GC_MULTI_MMAP), 1)
-VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-multi-mmap.ll
-else
-ifeq ($(GC_SINGLE_MMAP), 1)
-VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-single-mmap.ll
-else
-ifeq ($(GC_BOEHM), 1)
-VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-boehm.ll
-endif
-endif
-endif
+VMKIT_RUNTIME += $(PROJ_SRC_DIR)/runtime-service.ll $(PROJ_SRC_DIR)/runtime-isolate.ll
 endif
 
 ifeq ($(SINGLE_BUILD), 1)

Removed: vmkit/trunk/lib/J3/LLVMRuntime/runtime-boehm.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/runtime-boehm.ll?rev=108835&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/runtime-boehm.ll (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/runtime-boehm.ll (removed)
@@ -1,5 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Collector specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-declare %JavaObject* @gcmalloc(i32, %VT*)

Removed: vmkit/trunk/lib/J3/LLVMRuntime/runtime-multi-mmap.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/runtime-multi-mmap.ll?rev=108835&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/runtime-multi-mmap.ll (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/runtime-multi-mmap.ll (removed)
@@ -1,10 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Collector specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-declare void @MarkAndTrace(%JavaObject*, i8*)
-declare void @JavaObjectTracer(%JavaObject*, i8*)
-declare void @JavaArrayTracer(%JavaObject*, i8*)
-declare void @ArrayObjectTracer(%JavaObject*, i8*)
-declare void @RegularObjectTracer(%JavaObject*, i8*)
-declare void @EmptyTracer(%JavaObject*, i8*)

Removed: vmkit/trunk/lib/J3/LLVMRuntime/runtime-single-mmap.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/runtime-single-mmap.ll?rev=108835&view=auto
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/runtime-single-mmap.ll (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/runtime-single-mmap.ll (removed)
@@ -1,10 +0,0 @@
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;; Collector specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-declare void @MarkAndTrace(%JavaObject*)
-declare void @JavaObjectTracer(%JavaObject*)
-declare void @JavaArrayTracer(%JavaObject*)
-declare void @ArrayObjectTracer(%JavaObject*)
-declare void @RegularObjectTracer(%JavaObject*)
-declare void @EmptyTracer(%JavaObject*)

Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Tue Jul 20 09:32:37 2010
@@ -40,7 +40,6 @@
 Class* ClassArray::SuperArray;
 Class** ClassArray::InterfacesArray;
 
-extern "C" void JavaArrayTracer(JavaObject*);
 extern "C" void JavaObjectTracer(JavaObject*);
 extern "C" void ArrayObjectTracer(JavaObject*);
 extern "C" void RegularObjectTracer(JavaObject*);
@@ -1756,7 +1755,7 @@
 
   } else {
     // Set the tracer, destructor and delete
-    tracer = (uintptr_t)JavaArrayTracer;
+    tracer = (uintptr_t)JavaObjectTracer;
     destructor = 0;
     operatorDelete = 0;
     

Modified: vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp?rev=108836&r1=108835&r2=108836&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/VirtualTables.cpp Tue Jul 20 09:32:37 2010
@@ -56,54 +56,16 @@
                                (uintptr_t)VMClassLoader::staticTracer);
 
 //===----------------------------------------------------------------------===//
-// Empty tracer for static tracers of classes that do not declare static
-// variables.
+// Trace methods for Java objects. There are three types of objects:
+// (1) java.lang.Object and primitive arrays: no need to trace anything.
+// (2) Object whose class is not an array: needs to trace the classloader, and
+//     all the virtual fields.
+// (3) Object whose class is an array of objects: needs to trace the class
+//     loader and all elements in the array.
 //===----------------------------------------------------------------------===//
 
-extern "C" void EmptyTracer(void*, uintptr_t) {}
-
-//===----------------------------------------------------------------------===//
-// Trace methods for Java objects. There are four types of objects:
-// (1) Base object whose class is not an array: needs to trace the classloader
-//     and the lock.
-// (1) Object whose class is not an array: needs to trace the classloader, the
-//     lock and all the virtual fields.
-// (2) Object whose class is an array of objects: needs to trace root (1) and
-//     all elements in the array.
-// (3) Object whose class is a native array: only needs to trace the lock. The
-//     classloader is the bootstrap loader and is traced by the JVM.
-//===----------------------------------------------------------------------===//
-
-
-/// Method for scanning the root of an object.
+/// Scanning java.lang.Object and primitive arrays.
 extern "C" void JavaObjectTracer(JavaObject* obj, uintptr_t closure) {
-  CommonClass* cl = JavaObject::getClass(obj);
-  assert(cl && "No class");
-  mvm::Collector::markAndTraceRoot(
-      cl->classLoader->getJavaClassLoaderPtr(), closure);
-}
-
-/// Method for scanning an array whose elements are JavaObjects. This method is
-/// called by all non-native Java arrays.
-extern "C" void ArrayObjectTracer(ArrayObject* obj, uintptr_t closure) {
-  CommonClass* cl = JavaObject::getClass(obj);
-  assert(cl && "No class");
-  mvm::Collector::markAndTraceRoot(
-      cl->classLoader->getJavaClassLoaderPtr(), closure);
-  
-
-  for (sint32 i = 0; i < ArrayObject::getSize(obj); i++) {
-    if (ArrayObject::getElement(obj, i) != NULL) {
-      mvm::Collector::markAndTrace(
-          obj, ArrayObject::getElements(obj) + i, closure);
-    }
-  } 
-}
-
-/// Method for scanning a native array. The classloader of
-/// the class is the bootstrap loader and therefore does not need to be
-/// scanned here.
-extern "C" void JavaArrayTracer(JavaArray* obj, uintptr_t closure) {
 }
 
 /// Method for scanning regular objects.
@@ -125,6 +87,22 @@
   }
 }
 
+/// Method for scanning an array whose elements are JavaObjects. This method is
+/// called for all non-native Java arrays.
+extern "C" void ArrayObjectTracer(ArrayObject* obj, uintptr_t closure) {
+  CommonClass* cl = JavaObject::getClass(obj);
+  assert(cl && "No class");
+  mvm::Collector::markAndTraceRoot(
+      cl->classLoader->getJavaClassLoaderPtr(), closure);
+  
+
+  for (sint32 i = 0; i < ArrayObject::getSize(obj); i++) {
+    if (ArrayObject::getElement(obj, i) != NULL) {
+      mvm::Collector::markAndTrace(
+          obj, ArrayObject::getElements(obj) + i, closure);
+    }
+  } 
+}
 
 //===----------------------------------------------------------------------===//
 // Support for scanning Java objects referenced by classes. All classes must
@@ -138,28 +116,29 @@
 // (4) The static instance.
 //===----------------------------------------------------------------------===//
 
-
 void CommonClass::tracer(uintptr_t closure) {
   
-  if (super && super->classLoader) {
+  if (super != NULL && super->classLoader != NULL) {
     JavaObject** Obj = super->classLoader->getJavaClassLoaderPtr();
-    if (*Obj) mvm::Collector::markAndTraceRoot(Obj, closure);
+    if (*Obj != NULL) mvm::Collector::markAndTraceRoot(Obj, closure);
   
     for (uint32 i = 0; i < nbInterfaces; ++i) {
       if (interfaces[i]->classLoader) {
         JavaObject** Obj = interfaces[i]->classLoader->getJavaClassLoaderPtr();
-        if (*Obj) mvm::Collector::markAndTraceRoot(Obj, closure);
+        if (*Obj != NULL) mvm::Collector::markAndTraceRoot(Obj, closure);
       }
     }
   }
 
-  if (classLoader)
+  if (classLoader != NULL) {
     mvm::Collector::markAndTraceRoot(
         classLoader->getJavaClassLoaderPtr(), closure);
+  }
 
   for (uint32 i = 0; i < NR_ISOLATES; ++i) {
-    // If the delegatee was static allocated, we want to trace its fields.
-    if (delegatee[i]) {
+    if (delegatee[i] != NULL) {
+      // TODO: remove this call to trace once no delegatee is static allocated
+      // in AOT mode.
       delegatee[i]->tracer(closure);
       mvm::Collector::markAndTraceRoot(delegatee + i, closure);
     }
@@ -172,7 +151,7 @@
   
   for (uint32 i = 0; i < NR_ISOLATES; ++i) {
     TaskClassMirror &M = IsolateInfo[i];
-    if (M.staticInstance) {
+    if (M.staticInstance != NULL) {
       for (uint32 i = 0; i < nbStaticFields; ++i) {
         JavaField& field = staticFields[i];
         if (field.isReference()) {
@@ -263,13 +242,13 @@
   VirtualMachine::tracer(closure);
   bootstrapLoader->tracer(closure);
   
-  if (appClassLoader) {
+  if (appClassLoader != NULL) {
     mvm::Collector::markAndTraceRoot(
         appClassLoader->getJavaClassLoaderPtr(), closure);
   }
   
   JNIGlobalReferences* start = &globalRefs;
-  while (start) {
+  while (start != NULL) {
     for (uint32 i = 0; i < start->length; ++i) {
       JavaObject** obj = start->globalReferences + i;
       mvm::Collector::markAndTraceRoot(obj, closure);
@@ -312,7 +291,7 @@
 }
 
 void JavaThread::tracer(uintptr_t closure) {
-  if (pendingException) {
+  if (pendingException != NULL) {
     mvm::Collector::markAndTraceRoot(&pendingException, closure);
   }
   mvm::Collector::markAndTraceRoot(&javaThread, closure);
@@ -321,7 +300,7 @@
 #endif
   
   JNILocalReferences* end = localJNIRefs;
-  while (end) {
+  while (end != NULL) {
     for (uint32 i = 0; i < end->length; ++i) {
       JavaObject** obj = end->localReferences + i;
       mvm::Collector::markAndTraceRoot(obj, closure);





More information about the vmkit-commits mailing list