[vmkit-commits] [vmkit] r58200 - in /vmkit/trunk: include/mvm/CompilationUnit.h include/mvm/VirtualMachine.h lib/JnJVM/VMCore/JavaConstantPool.cpp lib/JnJVM/VMCore/JavaInitialise.cpp lib/JnJVM/VMCore/JnjvmClassLoader.cpp lib/JnJVM/VMCore/JnjvmClassLoader.h lib/N3/VMCore/N3Initialise.cpp tools/jnjvm/Main.cpp tools/vmkit/CommandLine.cpp tools/vmkit/CommandLine.h tools/vmkit/Launcher.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Oct 26 12:28:26 PDT 2008
Author: geoffray
Date: Sun Oct 26 14:28:25 2008
New Revision: 58200
URL: http://llvm.org/viewvc/llvm-project?rev=58200&view=rev
Log:
Static initialization of a VM returns a compilation unit, which is then passed to
the VM factory.
In JnJVM, this makes the bootstrap loader non static.
Added:
vmkit/trunk/include/mvm/CompilationUnit.h
Modified:
vmkit/trunk/include/mvm/VirtualMachine.h
vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
vmkit/trunk/tools/jnjvm/Main.cpp
vmkit/trunk/tools/vmkit/CommandLine.cpp
vmkit/trunk/tools/vmkit/CommandLine.h
vmkit/trunk/tools/vmkit/Launcher.cpp
Added: vmkit/trunk/include/mvm/CompilationUnit.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/CompilationUnit.h?rev=58200&view=auto
==============================================================================
--- vmkit/trunk/include/mvm/CompilationUnit.h (added)
+++ vmkit/trunk/include/mvm/CompilationUnit.h Sun Oct 26 14:28:25 2008
@@ -0,0 +1,36 @@
+//===---- CompilingUnit.h - A compilation unit to compile source files ----===//
+//
+// The VMKit project
+//
+// This file is distributed under the University of Pierre et Marie Curie
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// A compilation unit contains a module and a module provider to compile source
+// files of a virtual machine, e.g .java files in Java.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef MVM_COMPILATION_UNIT_H
+#define MVM_COMPILATION_UNIT_H
+
+#include "mvm/Object.h"
+
+namespace llvm {
+ class Module;
+ class ModuleProvider;
+}
+
+namespace mvm {
+
+class CompilationUnit : public mvm::Object {
+public:
+ llvm::Module* TheModule;
+ llvm::ModuleProvider* TheModuleProvider;
+
+};
+}
+
+
+#endif
Modified: vmkit/trunk/include/mvm/VirtualMachine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/VirtualMachine.h?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/include/mvm/VirtualMachine.h (original)
+++ vmkit/trunk/include/mvm/VirtualMachine.h Sun Oct 26 14:28:25 2008
@@ -15,6 +15,7 @@
#ifndef MVM_VIRTUALMACHINE_H
#define MVM_VIRTUALMACHINE_H
+#include "mvm/CompilationUnit.h"
#include "mvm/Object.h"
namespace mvm {
@@ -30,11 +31,11 @@
/// the arguments, hence it is the virtual machine's job to parse them.
virtual void runApplication(int argc, char** argv) = 0;
- static void initialiseJVM();
- static VirtualMachine* createJVM();
+ static CompilationUnit* initialiseJVM();
+ static VirtualMachine* createJVM(CompilationUnit* C = 0);
- static void initialiseCLIVM();
- static VirtualMachine* createCLIVM();
+ static CompilationUnit* initialiseCLIVM();
+ static VirtualMachine* createCLIVM(CompilationUnit* C = 0);
};
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp Sun Oct 26 14:28:25 2008
@@ -307,7 +307,7 @@
const UTF8* name = UTF8At(ctpDef[index]);
temp = loader->lookupClass(name);
if (!temp)
- temp = JnjvmClassLoader::bootstrapLoader->lookupClass(name);
+ temp = loader->bootstrapLoader->lookupClass(name);
}
#endif
return temp;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp Sun Oct 26 14:28:25 2008
@@ -62,29 +62,26 @@
}
#ifdef ISOLATE_SHARING
-void mvm::VirtualMachine::initialiseJVM() {
+mvm::CompilationUnit* mvm::VirtualMachine::initialiseJVM() {
initialiseVT();
- if (!JnjvmSharedLoader::sharedLoader) {
- JnjvmSharedLoader::sharedLoader = JnjvmSharedLoader::createSharedLoader();
- }
+ JnjvmSharedLoader::sharedLoader = JnjvmSharedLoader::createSharedLoader();
+ return JnjvmSharedLoader::sharedLoader;
}
-mvm::VirtualMachine* mvm::VirtualMachine::createJVM() {
+mvm::VirtualMachine* mvm::VirtualMachine::createJVM(mvm::CompilationUnit* C) {
JnjvmBootstraLoader* bootstrapLoader = gc_new(JnjvmBootstrapLoader)(0);
Jnjvm* vm = gc_new(Jnjvm)(bootstrapLoader);
return vm;
}
#else
-void mvm::VirtualMachine::initialiseJVM() {
+mvm::CompilationUnit* mvm::VirtualMachine::initialiseJVM() {
initialiseVT();
- if (!JnjvmClassLoader::bootstrapLoader) {
- JnjvmClassLoader::bootstrapLoader = gc_new(JnjvmBootstrapLoader)(0);
- }
+ return gc_new(JnjvmBootstrapLoader)(0);
}
-mvm::VirtualMachine* mvm::VirtualMachine::createJVM() {
- Jnjvm* vm = gc_new(Jnjvm)(JnjvmClassLoader::bootstrapLoader);
+mvm::VirtualMachine* mvm::VirtualMachine::createJVM(mvm::CompilationUnit* C) {
+ Jnjvm* vm = gc_new(Jnjvm)((JnjvmBootstrapLoader*)C);
return vm;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sun Oct 26 14:28:25 2008
@@ -37,11 +37,6 @@
using namespace jnjvm;
-#ifndef ISOLATE_SHARING
-JnjvmBootstrapLoader* JnjvmClassLoader::bootstrapLoader = 0;
-#endif
-
-
extern const char* GNUClasspathGlibj;
extern const char* GNUClasspathLibs;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Sun Oct 26 14:28:25 2008
@@ -16,6 +16,7 @@
#include "types.h"
#include "mvm/Allocator.h"
+#include "mvm/CompilationUnit.h"
#include "mvm/Object.h"
#include "mvm/PrintBuffer.h"
@@ -49,7 +50,7 @@
/// its own tables (signatures, UTF8, types) which are mapped to a single
/// table for non-isolate environments.
///
-class JnjvmClassLoader : public mvm::Object {
+class JnjvmClassLoader : public mvm::CompilationUnit {
private:
@@ -192,7 +193,7 @@
/// bootstrapLoader - The bootstrap loader of the JVM. Loads the base
/// classes.
///
- ISOLATE_STATIC JnjvmBootstrapLoader* bootstrapLoader;
+ JnjvmBootstrapLoader* bootstrapLoader;
/// ~JnjvmClassLoader - Destroy the loader. Depending on the JVM
/// configuration, this may destroy the tables, JIT module and
Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Sun Oct 26 14:28:25 2008
@@ -10,6 +10,7 @@
#include <vector>
+#include "mvm/CompilationUnit.h"
#include "mvm/JIT.h"
#include "mvm/Threads/Locks.h"
@@ -327,11 +328,12 @@
}
-void mvm::VirtualMachine::initialiseCLIVM() {
+mvm::CompilationUnit* mvm::VirtualMachine::initialiseCLIVM() {
if (!N3::bootstrapVM) {
initialiseVT();
initialiseStatics();
}
+ return 0;
}
void VirtualMachine::runApplication(int argc, char** argv) {
@@ -339,7 +341,7 @@
((N3*)this)->runMain(argc, argv);
}
-mvm::VirtualMachine* mvm::VirtualMachine::createCLIVM() {
+mvm::VirtualMachine* mvm::VirtualMachine::createCLIVM(mvm::CompilationUnit* C) {
N3* vm = N3::allocate("", N3::bootstrapVM);
return vm;
}
Modified: vmkit/trunk/tools/jnjvm/Main.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/jnjvm/Main.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/tools/jnjvm/Main.cpp (original)
+++ vmkit/trunk/tools/jnjvm/Main.cpp Sun Oct 26 14:28:25 2008
@@ -26,8 +26,8 @@
Thread::initialise();
Collector::initialise(0, &base);
- VirtualMachine::initialiseJVM();
- VirtualMachine* vm = VirtualMachine::createJVM();
+ CompilationUnit* CU = VirtualMachine::initialiseJVM();
+ VirtualMachine* vm = VirtualMachine::createJVM(CU);
vm->runApplication(argc, argv);
return 0;
Modified: vmkit/trunk/tools/vmkit/CommandLine.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/CommandLine.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/tools/vmkit/CommandLine.cpp (original)
+++ vmkit/trunk/tools/vmkit/CommandLine.cpp Sun Oct 26 14:28:25 2008
@@ -100,6 +100,7 @@
}
}
+#if 0
extern "C" int startApp(thread_arg_t* arg) {
int argc = arg->argc;
char** argv = arg->argv;
@@ -120,6 +121,7 @@
#endif
return 0;
}
+#endif
void CommandLine::executeInstr() {
if (!strcmp(argv[0], "load")) {
@@ -152,6 +154,7 @@
} else {
create_vm_t func = vmlets[argv[0]];
+ mvm::CompilationUnit* CU = compilers[argv[0]];
if (!func) {
fprintf(stderr, "\t Unknown vm %s\n", argv[0]);
} else {
@@ -163,7 +166,7 @@
int tid = 0;
Thread::start(&tid, (int (*)(void *))startApp, thread_arg);
#else
- VirtualMachine* VM = func();
+ VirtualMachine* VM = func(CU);
try {
VM->runApplication(argc, argv);
} catch(...) {
Modified: vmkit/trunk/tools/vmkit/CommandLine.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/CommandLine.h?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/tools/vmkit/CommandLine.h (original)
+++ vmkit/trunk/tools/vmkit/CommandLine.h Sun Oct 26 14:28:25 2008
@@ -29,7 +29,7 @@
#endif
typedef int (*boot_t)();
-typedef mvm::VirtualMachine* (*create_vm_t)();
+typedef mvm::VirtualMachine* (*create_vm_t)(mvm::CompilationUnit*);
namespace mvm {
@@ -54,6 +54,7 @@
char _yyChar;
std::map<const char*, create_vm_t, ltstr> vmlets;
+ std::map<const char*, mvm::CompilationUnit*, ltstr> compilers;
CommandLine();
Modified: vmkit/trunk/tools/vmkit/Launcher.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/tools/vmkit/Launcher.cpp?rev=58200&r1=58199&r2=58200&view=diff
==============================================================================
--- vmkit/trunk/tools/vmkit/Launcher.cpp (original)
+++ vmkit/trunk/tools/vmkit/Launcher.cpp Sun Oct 26 14:28:25 2008
@@ -69,25 +69,29 @@
if (VMToRun == RunJava) {
#if WITH_JNJVM
- mvm::VirtualMachine::initialiseJVM();
- mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM();
+ mvm::CompilationUnit* CU = mvm::VirtualMachine::initialiseJVM();
+ mvm::VirtualMachine* vm = mvm::VirtualMachine::createJVM(CU);
vm->runApplication(argc, argv);
#endif
} else if (VMToRun == RunNet) {
#if WITH_N3
- mvm::VirtualMachine::initialiseCLIVM();
- mvm::VirtualMachine* vm = mvm::VirtualMachine::createCLIVM();
+ mvm::CompilationUnit* CU = mvm::VirtualMachine::initialiseCLIVM();
+ mvm::VirtualMachine* vm = mvm::VirtualMachine::createCLIVM(CU);
vm->runApplication(argc, argv);
#endif
} else {
mvm::CommandLine MyCl;
#if WITH_JNJVM
- mvm::VirtualMachine::initialiseJVM();
+ mvm::CompilationUnit* JVMCompiler =
+ mvm::VirtualMachine::initialiseJVM();
MyCl.vmlets["java"] = (mvm::VirtualMachine::createJVM);
+ MyCl.compilers["java"] = JVMCompiler;
#endif
#if WITH_N3
- mvm::VirtualMachine::initialiseCLIVM();
+ mvm::CompilationUnit* CLICompiler =
+ mvm::VirtualMachine::initialiseCLIVM();
MyCl.vmlets["net"] = (mvm::VirtualMachine::createCLIVM);
+ MyCl.compilers["net"] = CLICompiler;
#endif
MyCl.start();
}
More information about the vmkit-commits
mailing list