[vmkit-commits] [vmkit] r70974 - /vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue May 5 06:05:55 PDT 2009
Author: geoffray
Date: Tue May 5 08:05:45 2009
New Revision: 70974
URL: http://llvm.org/viewvc/llvm-project?rev=70974&view=rev
Log:
Bugfix when initializing AOT classes.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=70974&r1=70973&r2=70974&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Tue May 5 08:05:45 2009
@@ -59,6 +59,8 @@
bool dlLoad) :
JnjvmClassLoader(Alloc) {
+ TheCompiler = Comp;
+
hashUTF8 = new(allocator) UTF8Map(allocator, 0);
classes = new(allocator) ClassMap();
javaTypes = new(allocator) TypeMap();
@@ -90,7 +92,9 @@
}
if (SuperArray) {
- ClassArray::SuperArray = (Class*)SuperArray->getInternal();
+ assert(TheCompiler &&
+ "Loading libvmjc"DYLD_EXTENSION" requires a compiler");
+ ClassArray::SuperArray = (Class*)SuperArray->getInternal();
// Get the native classes.
upcalls->OfVoid = (ClassPrimitive*)dlsym(nativeHandle, "void");
@@ -242,7 +246,6 @@
#undef DEF_UTF8
- TheCompiler = Comp;
}
@@ -1032,16 +1035,20 @@
// Extern "C" functions called by the vmjc static intializer.
extern "C" void vmjcAddPreCompiledClass(JnjvmClassLoader* JCL,
CommonClass* cl) {
- // To avoid data alignment in the llvm assembly emitter, we set the
- // staticMethods and staticFields fields here.
+ cl->classLoader = JCL;
+
if (cl->isClass()) {
Class* realCl = cl->asClass();
+ // To avoid data alignment in the llvm assembly emitter, we set the
+ // staticMethods and staticFields fields here.
realCl->staticMethods = realCl->virtualMethods + realCl->nbVirtualMethods;
realCl->staticFields = realCl->virtualFields + realCl->nbVirtualFields;
+ cl->virtualVT->setNativeTracer(cl->virtualVT->tracer, "");
}
- cl->classLoader = JCL;
- cl->virtualVT->setNativeTracer(cl->virtualVT->tracer, "");
- JCL->getClasses()->map.insert(std::make_pair(cl->name, cl));
+
+ if (!cl->isPrimitive())
+ JCL->getClasses()->map.insert(std::make_pair(cl->name, cl));
+
}
extern "C" void vmjcGetClassArray(JnjvmClassLoader* JCL, ClassArray** ptr,
More information about the vmkit-commits
mailing list