[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