[vmkit-commits] [vmkit] r67195 - in /vmkit/trunk: include/jnjvm/JavaCompiler.h include/jnjvm/JnjvmModule.h include/mvm/VirtualMachine.h lib/JnJVM/Compiler/JnjvmModuleAOT.cpp lib/JnJVM/VMCore/JavaClass.cpp lib/JnJVM/VMCore/JavaClass.h lib/JnJVM/VMCore/JavaConstantPool.cpp lib/JnJVM/VMCore/JavaTypes.cpp lib/JnJVM/VMCore/JavaTypes.h lib/JnJVM/VMCore/Jnjvm.cpp lib/JnJVM/VMCore/Jnjvm.h lib/JnJVM/VMCore/JnjvmClassLoader.cpp lib/JnJVM/VMCore/Zip.h tools/vmjc/vmjc.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Mar 18 03:28:07 PDT 2009
Author: geoffray
Date: Wed Mar 18 05:28:03 2009
New Revision: 67195
URL: http://llvm.org/viewvc/llvm-project?rev=67195&view=rev
Log:
New refactoring: put all compiler-dependent things like
AOT compile into the Compiler directory, not in Jnjvm.cpp.
Modified:
vmkit/trunk/include/jnjvm/JavaCompiler.h
vmkit/trunk/include/jnjvm/JnjvmModule.h
vmkit/trunk/include/mvm/VirtualMachine.h
vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/Zip.h
vmkit/trunk/tools/vmjc/vmjc.cpp
Modified: vmkit/trunk/include/jnjvm/JavaCompiler.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JavaCompiler.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/include/jnjvm/JavaCompiler.h (original)
+++ vmkit/trunk/include/jnjvm/JavaCompiler.h Wed Mar 18 05:28:03 2009
@@ -16,7 +16,6 @@
public:
virtual void* materializeFunction(JavaMethod* meth) = 0;
- virtual llvm::Function* parseFunction(JavaMethod* meth) = 0;
virtual void setMethod(JavaMethod* meth, void* ptr, const char* name) = 0;
virtual bool isStaticCompiling() = 0;
virtual void resolveVirtualClass(Class* cl) = 0;
Modified: vmkit/trunk/include/jnjvm/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/jnjvm/JnjvmModule.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/include/jnjvm/JnjvmModule.h (original)
+++ vmkit/trunk/include/jnjvm/JnjvmModule.h Wed Mar 18 05:28:03 2009
@@ -45,6 +45,7 @@
class JavaMethod;
class JavaObject;
class JavaString;
+class JnjvmClassLoader;
class JnjvmModule;
class Typedef;
class Signdef;
@@ -651,7 +652,11 @@
void printStats();
+ void compileFile(JnjvmClassLoader* JCL, const char* name);
+ void compileClass(Class* cl);
+private:
+ void compileAllStubs(Signdef* sign);
};
}
Modified: vmkit/trunk/include/mvm/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/VirtualMachine.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/VirtualMachine.h (original)
+++ vmkit/trunk/include/mvm/VirtualMachine.h Wed Mar 18 05:28:03 2009
@@ -53,9 +53,6 @@
/// the arguments, hence it is the virtual machine's job to parse them.
virtual void runApplication(int argc, char** argv) = 0;
- /// compile - Compile a given file to LLVM.
- virtual void compile(const char* name) = 0;
-
/// waitForExit - Wait until the virtual machine stops its execution.
virtual void waitForExit() = 0;
Modified: vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JnjvmModuleAOT.cpp Wed Mar 18 05:28:03 2009
@@ -21,9 +21,12 @@
#include "JavaCache.h"
#include "JavaConstantPool.h"
#include "JavaString.h"
+#include "JavaThread.h"
#include "JavaTypes.h"
#include "JavaUpcalls.h"
+#include "Jnjvm.h"
#include "Reader.h"
+#include "Zip.h"
#include <cstdio>
@@ -1464,3 +1467,155 @@
return func;
}
+
+void JavaAOTCompiler::compileClass(Class* cl) {
+
+ // Make sure the class is emitted.
+ getNativeClass(cl);
+
+ for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
+ JavaMethod& meth = cl->virtualMethods[i];
+ if (!isAbstract(meth.access)) parseFunction(&meth);
+ if (generateStubs) compileAllStubs(meth.getSignature());
+ }
+
+ for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
+ JavaMethod& meth = cl->staticMethods[i];
+ if (!isAbstract(meth.access)) parseFunction(&meth);
+ if (generateStubs) compileAllStubs(meth.getSignature());
+ }
+}
+
+static const char* name;
+
+void mainCompilerStart(JavaThread* th) {
+
+ Jnjvm* vm = th->getJVM();
+ JnjvmBootstrapLoader* bootstrapLoader = vm->bootstrapLoader;
+ JavaAOTCompiler* M = (JavaAOTCompiler*)bootstrapLoader->getModule();
+ try {
+
+ bootstrapLoader->analyseClasspathEnv(vm->classpath);
+ bootstrapLoader->upcalls->initialiseClasspath(bootstrapLoader);
+
+ uint32 size = strlen(name);
+
+ if (size > 4 &&
+ (!strcmp(&name[size - 4], ".jar") || !strcmp(&name[size - 4], ".zip"))) {
+
+
+ std::vector<Class*> classes;
+
+ ArrayUInt8* bytes = Reader::openFile(bootstrapLoader, name);
+ if (!bytes) vm->unknownError("Can't find zip file.");
+ ZipArchive archive(bytes, bootstrapLoader->allocator);
+
+ char* realName = (char*)alloca(4096);
+ for (ZipArchive::table_iterator i = archive.filetable.begin(),
+ e = archive.filetable.end(); i != e; ++i) {
+ ZipFile* file = i->second;
+
+ size = strlen(file->filename);
+ if (size > 6 && !strcmp(&(file->filename[size - 6]), ".class")) {
+ UserClassArray* array = bootstrapLoader->upcalls->ArrayOfByte;
+ ArrayUInt8* res =
+ (ArrayUInt8*)array->doNew(file->ucsize, bootstrapLoader->allocator);
+ int ok = archive.readFile(res, file);
+ if (!ok) vm->unknownError("Wrong zip file.");
+
+
+ memcpy(realName, file->filename, size);
+ realName[size - 6] = 0;
+ const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(realName);
+ Class* cl = bootstrapLoader->constructClass(utf8, res);
+ classes.push_back(cl);
+ }
+ }
+
+ // First resolve everyone so that there can not be unknown references in
+ // constant pools.
+ for (std::vector<Class*>::iterator i = classes.begin(),
+ e = classes.end(); i != e; ++i) {
+ Class* cl = *i;
+ cl->resolveClass();
+ cl->setOwnerClass(JavaThread::get());
+
+ for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
+ LLVMMethodInfo* LMI = M->getMethodInfo(&cl->virtualMethods[i]);
+ LMI->getMethod();
+ }
+
+ for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
+ LLVMMethodInfo* LMI = M->getMethodInfo(&cl->staticMethods[i]);
+ LMI->getMethod();
+ }
+
+ }
+
+ for (std::vector<Class*>::iterator i = classes.begin(), e = classes.end();
+ i != e; ++i) {
+ Class* cl = *i;
+ M->compileClass(cl);
+ }
+
+ } else {
+
+ const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(name);
+ UserClass* cl = bootstrapLoader->loadName(utf8, true, true);
+ cl->setOwnerClass(JavaThread::get());
+ M->compileClass(cl);
+ }
+
+ M->CreateStaticInitializer();
+
+ // Print stats before quitting.
+ M->printStats();
+
+ } catch(std::string str) {
+ fprintf(stderr, "Error : %s\n", str.c_str());
+ }
+
+#define SET_INLINE(NAME) { \
+ const UTF8* name = vm->asciizToUTF8(NAME); \
+ Class* cl = (Class*)vm->bootstrapLoader->lookupClass(name); \
+ if (cl) M->setNoInline(cl); }
+
+ SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater")
+ SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater"
+ "$AtomicReferenceFieldUpdaterImpl")
+ SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater")
+ SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater"
+ "$AtomicIntegerFieldUpdaterImpl")
+ SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater")
+ SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
+ "$CASUpdater")
+ SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
+ "$LockedUpdater")
+#undef SET_INLINE
+
+ vm->threadSystem.nonDaemonLock.lock();
+ --(vm->threadSystem.nonDaemonThreads);
+ if (vm->threadSystem.nonDaemonThreads == 0)
+ vm->threadSystem.nonDaemonVar.signal();
+ vm->threadSystem.nonDaemonLock.unlock();
+
+}
+
+void JavaAOTCompiler::compileFile(JnjvmClassLoader* JCL, const char* n) {
+ name = n;
+ Jnjvm* vm = gc_new(Jnjvm)((JnjvmBootstrapLoader*)JCL);
+ JavaThread* th = new JavaThread(0, 0, vm);
+ vm->setBootstrapThread(th);
+ th->start((void (*)(mvm::Thread*))mainCompilerStart);
+ vm->waitForExit();
+}
+
+/// compileAllStubs - Compile all the native -> Java stubs.
+/// TODO: Once LLVM supports va_arg, enable AP.
+///
+void JavaAOTCompiler::compileAllStubs(Signdef* sign) {
+ sign->getStaticCallBuf();
+ // getStaticCallAP();
+ sign->getVirtualCallBuf();
+ // getVirtualCallAP();
+}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Wed Mar 18 05:28:03 2009
@@ -16,13 +16,13 @@
#include "JavaArray.h"
#include "JavaCache.h"
#include "JavaClass.h"
+#include "JavaCompiler.h"
#include "JavaConstantPool.h"
#include "JavaObject.h"
#include "JavaThread.h"
#include "JavaTypes.h"
#include "JavaUpcalls.h"
#include "Jnjvm.h"
-#include "JnjvmModule.h"
#include "LockedMap.h"
#include "Reader.h"
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Wed Mar 18 05:28:03 2009
@@ -886,20 +886,13 @@
///
class ClassArray : public CommonClass {
- /// Reader and Jnjvm are friends because they may allocate arrays without
- /// a vm.
- friend class Reader;
- friend class Jnjvm;
-
-private:
+public:
/// doNew - Allocate a new array with the given allocator.
///
JavaArray* doNew(sint32 n, mvm::BumpPtrAllocator& allocator);
JavaArray* doNew(sint32 n, mvm::Allocator& allocator);
-public:
-
/// _baseClass - The base class of the array.
///
CommonClass* _baseClass;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp Wed Mar 18 05:28:03 2009
@@ -18,9 +18,9 @@
#include "JavaAccess.h"
#include "JavaArray.h"
#include "JavaClass.h"
+#include "JavaCompiler.h"
#include "JavaConstantPool.h"
#include "Jnjvm.h"
-#include "JnjvmModule.h"
#include "JavaThread.h"
#include "JavaTypes.h"
#include "LockedMap.h"
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.cpp Wed Mar 18 05:28:03 2009
@@ -11,8 +11,8 @@
#include "JavaArray.h"
#include "JavaClass.h"
+#include "JavaCompiler.h"
#include "JavaTypes.h"
-#include "JnjvmModule.h"
using namespace jnjvm;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaTypes.h Wed Mar 18 05:28:03 2009
@@ -353,18 +353,7 @@
// End of inlined methods of getting dynamically generated functions.
//
//===----------------------------------------------------------------------===//
-
- /// compileAllStubs - Compile all the native -> Java stubs.
- /// TODO: Once LLVM supports va_arg, enable AP.
- ///
- void compileAllStubs() {
- getStaticCallBuf();
- // getStaticCallAP();
- getVirtualCallBuf();
- // getVirtualCallAP();
- }
-
-
+
/// JInfo - Holds info useful for the JIT.
///
mvm::JITInfo* JInfo;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Mar 18 05:28:03 2009
@@ -15,6 +15,7 @@
#include <cstdio>
#include <cstdlib>
#include <cstring>
+#include <string>
#include "debug.h"
#include "mvm/Threads/Thread.h"
@@ -22,13 +23,13 @@
#include "ClasspathReflect.h"
#include "JavaArray.h"
#include "JavaClass.h"
+#include "JavaCompiler.h"
#include "JavaConstantPool.h"
#include "JavaString.h"
#include "JavaThread.h"
#include "JavaTypes.h"
#include "JavaUpcalls.h"
#include "Jnjvm.h"
-#include "JnjvmModule.h"
#include "LockedMap.h"
#include "Reader.h"
#include "Zip.h"
@@ -1099,151 +1100,6 @@
return (const UTF8*)tmp;
}
-
-static void compileClass(Class* cl) {
- JavaAOTCompiler* Mod = (JavaAOTCompiler*)cl->classLoader->getModule();
-
- // Make sure the class is emitted.
- Mod->getNativeClass(cl);
-
- for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
- JavaMethod& meth = cl->virtualMethods[i];
- if (!isAbstract(meth.access))
- cl->classLoader->getModule()->parseFunction(&meth);
- if (Mod->generateStubs) meth.getSignature()->compileAllStubs();
- }
-
- for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
- JavaMethod& meth = cl->staticMethods[i];
- if (!isAbstract(meth.access))
- cl->classLoader->getModule()->parseFunction(&meth);
- if (Mod->generateStubs) meth.getSignature()->compileAllStubs();
- }
-}
-
-static const char* name;
-
-void Jnjvm::mainCompilerStart(JavaThread* th) {
-
- Jnjvm* vm = th->getJVM();
- JnjvmBootstrapLoader* bootstrapLoader = vm->bootstrapLoader;
- JavaAOTCompiler* M = (JavaAOTCompiler*)bootstrapLoader->getModule();
- try {
-
- bootstrapLoader->analyseClasspathEnv(vm->classpath);
- bootstrapLoader->upcalls->initialiseClasspath(bootstrapLoader);
-
- uint32 size = strlen(name);
-
- if (size > 4 &&
- (!strcmp(&name[size - 4], ".jar") || !strcmp(&name[size - 4], ".zip"))) {
-
-
- std::vector<Class*> classes;
-
- ArrayUInt8* bytes = Reader::openFile(bootstrapLoader, name);
- if (!bytes) vm->unknownError("Can't find zip file.");
- ZipArchive archive(bytes, bootstrapLoader->allocator);
-
- char* realName = (char*)alloca(4096);
- for (ZipArchive::table_iterator i = archive.filetable.begin(),
- e = archive.filetable.end(); i != e; ++i) {
- ZipFile* file = i->second;
-
- size = strlen(file->filename);
- if (size > 6 && !strcmp(&(file->filename[size - 6]), ".class")) {
- UserClassArray* array = bootstrapLoader->upcalls->ArrayOfByte;
- ArrayUInt8* res =
- (ArrayUInt8*)array->doNew(file->ucsize, bootstrapLoader->allocator);
- int ok = archive.readFile(res, file);
- if (!ok) vm->unknownError("Wrong zip file.");
-
-
- memcpy(realName, file->filename, size);
- realName[size - 6] = 0;
- const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(realName);
- Class* cl = bootstrapLoader->constructClass(utf8, res);
- classes.push_back(cl);
- }
- }
-
- // First resolve everyone so that there can not be unknown references in
- // constant pools.
- for (std::vector<Class*>::iterator i = classes.begin(),
- e = classes.end(); i != e; ++i) {
- Class* cl = *i;
- cl->resolveClass();
- cl->setOwnerClass(JavaThread::get());
-
- for (uint32 i = 0; i < cl->nbVirtualMethods; ++i) {
- LLVMMethodInfo* LMI = M->getMethodInfo(&cl->virtualMethods[i]);
- LMI->getMethod();
- }
-
- for (uint32 i = 0; i < cl->nbStaticMethods; ++i) {
- LLVMMethodInfo* LMI = M->getMethodInfo(&cl->staticMethods[i]);
- LMI->getMethod();
- }
-
- }
-
- for (std::vector<Class*>::iterator i = classes.begin(), e = classes.end();
- i != e; ++i) {
- Class* cl = *i;
- compileClass(cl);
- }
-
- } else {
-
- const UTF8* utf8 = bootstrapLoader->asciizConstructUTF8(name);
- UserClass* cl = bootstrapLoader->loadName(utf8, true, true);
- cl->setOwnerClass(JavaThread::get());
- compileClass(cl);
- }
-
- M->CreateStaticInitializer();
-
- // Print stats before quitting.
- M->printStats();
-
- } catch(std::string str) {
- fprintf(stderr, "Error : %s\n", str.c_str());
- }
-
-#define SET_INLINE(NAME) { \
- const UTF8* name = vm->asciizToUTF8(NAME); \
- Class* cl = (Class*)vm->bootstrapLoader->lookupClass(name); \
- if (cl) M->setNoInline(cl); }
-
- SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater")
- SET_INLINE("java/util/concurrent/atomic/AtomicReferenceFieldUpdater"
- "$AtomicReferenceFieldUpdaterImpl")
- SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater")
- SET_INLINE("java/util/concurrent/atomic/AtomicIntegerFieldUpdater"
- "$AtomicIntegerFieldUpdaterImpl")
- SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater")
- SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
- "$CASUpdater")
- SET_INLINE("java/util/concurrent/atomic/AtomicLongFieldUpdater"
- "$LockedUpdater")
-#undef SET_INLINE
-
- vm->threadSystem.nonDaemonLock.lock();
- --(vm->threadSystem.nonDaemonThreads);
- if (vm->threadSystem.nonDaemonThreads == 0)
- vm->threadSystem.nonDaemonVar.signal();
- vm->threadSystem.nonDaemonLock.unlock();
-
-}
-
-void Jnjvm::compile(const char* n) {
- name = n;
- bootstrapThread = new JavaThread(0, 0, this);
- bootstrapThread->start((void (*)(mvm::Thread*))mainCompilerStart);
-}
-
-
-
void Jnjvm::removeMethodsInFunctionMap(JnjvmClassLoader* loader) {
// Loop over all methods in the map to find which ones belong
// to this class loader.
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Wed Mar 18 05:28:03 2009
@@ -244,7 +244,7 @@
/// hashStr - Hash map of java/lang/String objects allocated by this JVM.
///
StringMap hashStr;
-
+
public:
/// CreateExceptions - These are the runtime exceptions thrown by Java code
@@ -303,6 +303,10 @@
/// asciizToUTF8 - Constructs an UTF8 out of the asciiz.
///
const UTF8* asciizToUTF8(const char* asciiz);
+
+ /// setBootstrapThread - Set the bootstrap thread of this VM.
+ ///
+ void setBootstrapThread(JavaThread* th) { bootstrapThread = th; }
/// ~Jnjvm - Destroy the JVM.
///
@@ -335,10 +339,6 @@
///
virtual void runApplication(int argc, char** argv);
- /// compile - Compile the .class, .zip or .jar file to LLVM IR.
- ///
- virtual void compile(const char* name);
-
/// waitForExit - Waits that there are no more non-daemon threads in this JVM.
///
virtual void waitForExit();
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Wed Mar 18 05:28:03 2009
@@ -21,6 +21,7 @@
#include <sys/stat.h>
#include <unistd.h>
+#include <string>
#if defined(__MACH__)
@@ -37,6 +38,7 @@
#include "Classpath.h"
#include "ClasspathReflect.h"
#include "JavaClass.h"
+#include "JavaCompiler.h"
#include "JavaConstantPool.h"
#include "JavaString.h"
#include "JavaThread.h"
@@ -44,7 +46,6 @@
#include "JavaUpcalls.h"
#include "Jnjvm.h"
#include "JnjvmClassLoader.h"
-#include "JnjvmModule.h"
#include "LockedMap.h"
#include "Reader.h"
#include "Zip.h"
Modified: vmkit/trunk/lib/JnJVM/VMCore/Zip.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Zip.h?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Zip.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Zip.h Wed Mar 18 05:28:03 2009
@@ -33,9 +33,6 @@
class ZipArchive : public mvm::PermanentObject {
- friend class JnjvmBootstrapLoader;
- friend class Jnjvm;
-private:
mvm::BumpPtrAllocator& allocator;
@@ -48,8 +45,12 @@
};
int ofscd;
+
+public:
std::map<const char*, ZipFile*, ltstr> filetable;
typedef std::map<const char*, ZipFile*, ltstr>::iterator table_iterator;
+
+private:
ArrayUInt8* bytes;
void findOfscd();
Modified: vmkit/trunk/tools/vmjc/vmjc.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmjc/vmjc.cpp?rev=67195&r1=67194&r2=67195&view=diff
==============================================================================
--- vmkit/trunk/tools/vmjc/vmjc.cpp (original)
+++ vmkit/trunk/tools/vmjc/vmjc.cpp Wed Mar 18 05:28:03 2009
@@ -217,9 +217,7 @@
if (DisableTracers) MAOT->generateTracers = false;
if (DisableStubs) MAOT->generateStubs = false;
if (AssumeCompiled) MAOT->assumeCompiled = true;
- mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM(JCL);
- vm->compile(InputFilename.c_str());
- vm->waitForExit();
+ MAOT->compileFile(JCL, InputFilename.c_str());
if (DontPrint) {
// Just use stdout. We won't actually print anything on it.
More information about the vmkit-commits
mailing list