[vmkit-commits] [vmkit] r57293 - in /vmkit/trunk/lib/JnJVM: Classpath/ VMCore/
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Wed Oct 8 05:42:34 PDT 2008
Author: geoffray
Date: Wed Oct 8 07:42:32 2008
New Revision: 57293
URL: http://llvm.org/viewvc/llvm-project?rev=57293&view=rev
Log:
Fix naming of macros to compile either a regular isolate
environment or a sharing isolate environment.
Modified:
vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaCache.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h
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/JavaInitialise.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h
vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
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/JnjvmClassLoader.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmConfig.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
vmkit/trunk/lib/JnJVM/VMCore/LowerConstantCalls.cpp
vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathConstructor.cpp.inc Wed Oct 8 07:42:32 2008
@@ -34,7 +34,7 @@
jobject cons) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)(vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons));
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->constructorClass->getInt32Field((JavaObject*)cons);
UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
JnjvmClassLoader* loader = cl->classLoader;
@@ -116,7 +116,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->constructorSlot->getInt32Field((JavaObject*)cons);
UserClass* cl = 0;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)cons);
cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
#else
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathMethod.cpp.inc Wed Oct 8 07:42:32 2008
@@ -43,7 +43,7 @@
jobject Meth) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
JnjvmClassLoader* loader = cl->classLoader;
@@ -62,7 +62,7 @@
jobject Meth) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)Meth);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)Meth);
UserCommonClass* cl = NativeUtil::resolvedImplClass(Cl, false);
JnjvmClassLoader* loader = cl->classLoader;
@@ -97,7 +97,7 @@
if (!(obj->classOf->isAssignableFrom(cl))) {
vm->illegalArgumentExceptionForMethod(meth, cl, obj->classOf);
}
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
if (isInterface(cl->classDef->access)) {
cl = obj->classOf->lookupClassFromMethod(meth);
} else {
@@ -214,7 +214,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
JavaMethod* meth = (JavaMethod*)vm->upcalls->methodSlot->getInt32Field((JavaObject*)_meth);
UserClass* cl = 0;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->methodClass->getInt32Field((JavaObject*)_meth);
cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
#else
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMField.cpp.inc Wed Oct 8 07:42:32 2008
@@ -21,7 +21,7 @@
static UserClass* internalGetClass(Jnjvm* vm, JavaField* field, jobject Field) {
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
jclass Cl = (jclass)vm->upcalls->fieldClass->getInt32Field((JavaObject*)Field);
UserClass* cl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
return cl;
@@ -47,13 +47,8 @@
jobject obj) {
Jnjvm* vm = JavaThread::get()->isolate;
JavaField* field = (JavaField*)vm->upcalls->fieldSlot->getInt32Field((JavaObject*)obj);
-#ifdef MULTIPLE_VM
- jclass Cl = (jclass)vm->upcalls->fieldClass->getInt32Field((JavaObject*)obj);
- UserClass* fieldCl = (UserClass*)NativeUtil::resolvedImplClass(Cl, false);
+ UserClass* fieldCl = internalGetClass(vm, field, obj);
JnjvmClassLoader* loader = fieldCl->classLoader;
-#else
- JnjvmClassLoader* loader = field->classDef->classLoader;
-#endif
UserCommonClass* cl = field->getSignature()->assocClass(loader);
return (jclass)cl->getClassDelegatee(vm);
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMRuntime.cpp.inc Wed Oct 8 07:42:32 2008
@@ -125,10 +125,10 @@
jclass clazz,
#endif
jint par1) {
-#ifndef MULTIPLE_VM
+#if defined(ISOLATE) || defined(ISOLATE_SHARING)
+ // TODO: do a longjmp
exit(par1);
#else
- // TODO: do a longjmp
exit(par1);
#endif
}
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMStackWalker.cpp.inc Wed Oct 8 07:42:32 2008
@@ -28,7 +28,7 @@
extern "C" {
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
uint32 getPools(UserConstantPool** pools, uint32 size) {
unsigned int* top;
register unsigned int **cur = ⊤
@@ -47,7 +47,7 @@
}
#endif
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
JavaObject* getClassInContext(Jnjvm* vm, Class* cl, UserConstantPool** ctps, uint32& ctpIndex) {
for (; ctpIndex < 100; ++ctpIndex) {
UserClass* newCl = ctps[ctpIndex]->getClass();
@@ -98,7 +98,7 @@
Jnjvm* vm = JavaThread::get()->isolate;
int* ips[100];
int real_size = mvm::jit::getBacktrace((void**)(void*)ips, 100);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
UserConstantPool* pools[100];
getPools(pools, 100);
#endif
@@ -109,7 +109,7 @@
while (i < real_size) {
JavaMethod* meth = JavaJIT::IPToJavaMethod(ips[i++]);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
if (meth && meth->classDef == cl->classDef) {
#else
if (meth && meth->classDef == cl) {
@@ -119,7 +119,7 @@
}
}
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
return (jobject)recGetClassContext(vm, ips, real_size, first, 0, pools, 0);
#else
return (jobject)recGetClassContext(vm, ips, real_size, first, 0);
Modified: vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc (original)
+++ vmkit/trunk/lib/JnJVM/Classpath/ClasspathVMThrowable.cpp.inc Wed Oct 8 07:42:32 2008
@@ -101,7 +101,7 @@
while (stack[i] != 0) {
JavaMethod* meth = JavaJIT::IPToJavaMethod(stack[i++]);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
if (meth) {
#else
if (meth && !meth->classDef->subclassOf(vm->upcalls->newThrowable)) {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h Wed Oct 8 07:42:32 2008
@@ -150,7 +150,7 @@
/// equals - Returns whether two UTF8s are equals. When the JnJVM executes
/// in single mode, equality is just a pointer comparison. When executing
/// in multiple mode, we compare the contents of the UTF8s.
-#ifndef MULTIPLE_VM
+#if defined(ISOLATE) || defined(ISOLATE_SHARING)
bool equals(const UTF8* other) const {
return this == other;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaBacktrace.cpp Wed Oct 8 07:42:32 2008
@@ -61,7 +61,7 @@
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
UserClass* JavaJIT::getCallingClass() {
int* ips[10];
int real_size = mvm::jit::getBacktrace((void**)(void*)ips, 10);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaCache.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaCache.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaCache.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaCache.cpp Wed Oct 8 07:42:32 2008
@@ -41,7 +41,7 @@
lastCible = 0;
methPtr = 0;
next = 0;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
definingCtp = 0;
#endif
enveloppe = E;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaCache.h Wed Oct 8 07:42:32 2008
@@ -51,7 +51,7 @@
/// enveloppe - The container to which this class belongs to.
Enveloppe* enveloppe;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
///definingClass - The class that defined the method being called.
///
UserConstantPool* definingCtp;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Wed Oct 8 07:42:32 2008
@@ -264,7 +264,7 @@
this->array = isArray;
this->primitive = false;
this->JInfo = 0;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE) && !defined(ISOLATE_SHARING)
this->delegatee = 0;
#endif
}
@@ -286,7 +286,7 @@
bytes = B;
super = 0;
ctpInfo = 0;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE) && !defined(ISOLATE_SHARING)
_staticInstance = 0;
#endif
}
@@ -757,7 +757,7 @@
readAttributs(reader, attributs);
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
void CommonClass::resolveClass() {
if (status < resolved) {
acquire();
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Wed Oct 8 07:42:32 2008
@@ -122,7 +122,7 @@
/// class loader finalizer method will be defined.
///
class CommonClass : public mvm::Object {
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
friend class UserCommonClass;
#endif
private:
@@ -305,7 +305,7 @@
///
JnjvmClassLoader* classLoader;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE) && !defined(ISOLATE_SHARING)
/// delegatee - The java/lang/Class object representing this class
///
JavaObject* delegatee;
@@ -566,7 +566,7 @@
///
std::vector<Attribut*> attributs;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE) && !defined(ISOLATE_SHARING)
/// innerClasses - The inner classes of this class.
///
std::vector<Class*> innerClasses;
@@ -605,7 +605,7 @@
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
/// doNew - Allocates a Java object whose class is this class.
///
JavaObject* doNew(Jnjvm* vm);
@@ -634,7 +634,7 @@
/// is inlined when the vm is in a single environment. In a multiple
/// environment, the static instance is in a hashtable.
///
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE_SHARING) && !defined(ISOLATE)
JavaObject* _staticInstance;
JavaObject* getStaticInstance() {
@@ -687,7 +687,7 @@
void resolveInnerOuterClasses();
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
Class* getOuterClass() {
return outerClass;
}
@@ -1034,7 +1034,7 @@
} // end namespace jnjvm
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
#include "IsolateCommonClass.h"
#endif
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaConstantPool.cpp Wed Oct 8 07:42:32 2008
@@ -267,7 +267,7 @@
CommonClass* JavaConstantPool::loadClass(uint32 index) {
CommonClass* temp = isClassLoaded(index);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (!temp) {
JnjvmClassLoader* loader = classDef->classLoader;
const UTF8* name = UTF8At(ctpDef[index]);
@@ -286,7 +286,7 @@
CommonClass* JavaConstantPool::getMethodClassIfLoaded(uint32 index) {
CommonClass* temp = isClassLoaded(index);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (!temp) {
JnjvmClassLoader* loader = classDef->classLoader;
assert(loader && "Class has no loader?");
@@ -467,7 +467,7 @@
if (!stat) {
ctpRes[index] = (void*)field->ptrOffset;
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
else if (cl->isReady()) {
JavaObject* S = field->classDef->getStaticInstance();
ctpRes[index] = (void*)((uint64)S + field->ptrOffset);
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaInitialise.cpp Wed Oct 8 07:42:32 2008
@@ -33,7 +33,7 @@
#include "ServiceDomain.h"
#endif
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
#include "SharedMaps.h"
#include "IsolateSharedLoader.h"
#endif
@@ -53,16 +53,16 @@
INIT(ClassMap);
INIT(JnjvmBootstrapLoader);
INIT(JnjvmClassLoader);
-#ifdef SERVICE_VM
- INIT(ServiceDomain);
-#endif
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
INIT(JnjvmSharedLoader);
INIT(SharedClassByteMap);
INIT(UserClass);
INIT(UserClassArray);
INIT(UserConstantPool);
#endif
+#ifdef SERVICE_VM
+ INIT(ServiceDomain);
+#endif
#undef INIT
#define INIT(X) { \
@@ -80,7 +80,7 @@
void Jnjvm::initialiseStatics() {
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
if (!JnjvmSharedLoader::sharedLoader) {
JnjvmSharedLoader::sharedLoader = JnjvmSharedLoader::createSharedLoader();
}
@@ -123,7 +123,7 @@
JCL->loadName(JCL->asciizConstructUTF8("java/lang/Object"), false,
false);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
if (!ClassArray::SuperArray) {
ClassArray::SuperArray = JCL->SuperArray->classDef;
ClassArray::InterfacesArray.push_back((Class*)JCL->InterfacesArray[0]->classDef);
@@ -230,7 +230,7 @@
}
void mvm::VirtualMachine::initialiseJVM() {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (!JnjvmClassLoader::bootstrapLoader) {
initialiseVT();
Jnjvm::initialiseStatics();
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.cpp Wed Oct 8 07:42:32 2008
@@ -77,14 +77,14 @@
Value* VT = CallInst::Create(JnjvmModule::GetVTFunction, args[0], "",
currentBlock);
std::vector<Value*> indexes2; //[3];
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
std::vector<Value*> indexesCtp; //[3];
#endif
if (meth) {
LLVMMethodInfo* LMI = module->getMethodInfo(meth);
ConstantInt* Offset = LMI->getOffset();
indexes2.push_back(Offset);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
indexesCtp.push_back(ConstantInt::get(Type::Int32Ty,
Offset->getZExtValue() * -1));
#endif
@@ -93,7 +93,7 @@
Value* val = getConstantPoolAt(index, JnjvmModule::VirtualLookupFunction,
Type::Int32Ty, args[0], true);
indexes2.push_back(val);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* mul = BinaryOperator::createMul(val, mvm::jit::constantMinusOne,
"", currentBlock);
indexesCtp.push_back(mul);
@@ -106,7 +106,7 @@
Value* Func = new LoadInst(FuncPtr, "", currentBlock);
Func = new BitCastInst(Func, LSI->getVirtualPtrType(), "", currentBlock);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* CTP = GetElementPtrInst::Create(VT, indexesCtp.begin(),
indexesCtp.end(), "",
currentBlock);
@@ -157,7 +157,7 @@
endBlock = createBasicBlock("end block");
returnType = funcType->getReturnType();
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* lastArg = 0;
for (Function::arg_iterator i = func->arg_begin(), e = func->arg_end();
i != e; ++i) {
@@ -224,7 +224,7 @@
uint32 index = 0;
if (stat) {
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* val = getClassCtp();
Value* res = CallInst::Create(JnjvmModule::GetClassDelegateeFunction,
val, "", currentBlock);
@@ -417,7 +417,7 @@
currentBlock = EndUnlock;
}
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* JavaJIT::getStaticInstanceCtp() {
Value* cl = getClassCtp();
std::vector<Value*> indexes; //[3];
@@ -446,7 +446,7 @@
if (isVirtual(compilingMethod->access)) {
obj = llvmFunction->arg_begin();
} else {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
LLVMClassInfo* LCI =
(LLVMClassInfo*)module->getClassInfo(compilingClass);
obj = LCI->getStaticVar(this);
@@ -472,7 +472,7 @@
if (isVirtual(compilingMethod->access)) {
obj = llvmFunction->arg_begin();
} else {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
LLVMClassInfo* LCI =
(LLVMClassInfo*)module->getClassInfo(compilingClass);
obj = LCI->getStaticVar(this);
@@ -547,7 +547,7 @@
uint32 index = 0;
uint32 count = 0;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
uint32 max = args.size() - 2;
#else
uint32 max = args.size();
@@ -590,7 +590,7 @@
}
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
#if !defined(SERVICE_VM)
isolateLocal = args[args.size() - 2];
ctpCache = args[args.size() - 1];
@@ -715,7 +715,7 @@
uint32 index = 0;
uint32 count = 0;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
uint32 max = func->arg_size() - 2;
#else
uint32 max = func->arg_size();
@@ -757,7 +757,7 @@
}
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
#if !defined(SERVICE_VM)
isolateLocal = i;
i++;
@@ -923,7 +923,7 @@
if (isVirtual(compilingMethod->access)) {
argsSync.push_back(llvmFunction->arg_begin());
} else {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
LLVMClassInfo* LCI = (LLVMClassInfo*)module->getClassInfo(compilingClass);
Value* arg = LCI->getStaticVar(this);
#else
@@ -973,7 +973,7 @@
ex->catche = reader.readU2();
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (ex->catche) {
JavaObject* exc = 0;
UserClass* cl = 0;
@@ -1086,7 +1086,7 @@
Value* cl = 0;
currentBlock = cur->realTest;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
// We're dealing with exceptions, don't catch the exception if the class can
// not be found.
if (cur->catche) cl = getResolvedClass(cur->catche, false, false);
@@ -1156,7 +1156,7 @@
uint8 type = ctpInfo->typeAt(index);
if (type == JavaConstantPool::ConstantString) {
-#ifdef MULTIPLE_VM
+#if defined(ISOLATE) || defined(ISOLATE_SHARING)
// Lookup the constant pool cache
Value* val = getConstantPoolAt(index, JnjvmModule::StringLookupFunction,
JnjvmModule::JavaObjectType, 0, false);
@@ -1182,7 +1182,7 @@
push(ConstantFP::get(Type::FloatTy, ctpInfo->FloatAt(index)),
false);
} else if (type == JavaConstantPool::ConstantClass) {
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE)
if (ctpInfo->ctpRes[index]) {
CommonClass* cl = (CommonClass*)(ctpInfo->ctpRes[index]);
LLVMCommonClassInfo* LCI = module->getClassInfo(cl);
@@ -1193,7 +1193,7 @@
Value* res = CallInst::Create(JnjvmModule::GetClassDelegateeFunction,
val, "", currentBlock);
push(res, false);
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE)
}
#endif
} else {
@@ -1364,12 +1364,12 @@
void JavaJIT::makeArgs(FunctionType::param_iterator it,
uint32 index, std::vector<Value*>& Args, uint32 nb) {
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
nb += 1;
#endif
Args.reserve(nb + 2);
Value** args = (Value**)alloca(nb*sizeof(Value*));
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
args[nb - 1] = isolateLocal;
sint32 start = nb - 2;
it--;
@@ -1546,7 +1546,7 @@
if (!val) {
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
const Type* Ty = JnjvmModule::ConstantPoolType;
Constant* Nil = Constant::getNullValue(Ty);
GlobalVariable* GV = new GlobalVariable(Ty, false,
@@ -1619,7 +1619,7 @@
ctpInfo->infoOfStaticOrSpecialMethod(index, ACC_STATIC,
signature, meth);
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* newCtpCache = getConstantPoolAt(index,
JnjvmModule::StaticCtpLookupFunction,
JnjvmModule::ConstantPoolType, 0,
@@ -1651,9 +1651,8 @@
// This makes unswitch loop very unhappy time-wise, but makes GVN happy
// number-wise. IMO, it's better to have this than Unswitch.
-#if 1
std::vector<Value*> Args;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* CTP = ctpCache;
Args.push_back(mvm::jit::constantOne);
Value* Cl = GetElementPtrInst::Create(CTP, Args.begin(), Args.end(), "",
@@ -1693,73 +1692,6 @@
}
return res;
-#else
-
-#ifdef MULTIPLE_VM
- Value* CTP = ctpCache;
-#else
- JavaConstantPool* ctp = compilingClass->ctpInfo;
- LLVMConstantPoolInfo* LCPI = module->getConstantPoolInfo(ctp);
- Value* CTP = LCPI->getDelegatee(this);
-#endif
- std::vector<Value*> indexes; //[3];
-#ifndef MULTIPLE_VM
- indexes.push_back(ConstantInt::get(Type::Int32Ty, index));
-#else
- // Add one to the index because of the VT
- indexes.push_back(ConstantInt::get(Type::Int32Ty, index + 1));
-#endif
- Value* arg1 = GetElementPtrInst::Create(CTP, indexes.begin(),
- indexes.end(),
- "", currentBlock);
- arg1 = new LoadInst(arg1, "", false, currentBlock);
- Value* test = new ICmpInst(ICmpInst::ICMP_EQ, arg1, mvm::jit::constantPtrNull,
- "", currentBlock);
-
- BasicBlock* trueCl = createBasicBlock("Ctp OK");
- BasicBlock* falseCl = createBasicBlock("Ctp Not OK");
- PHINode* node = llvm::PHINode::Create(mvm::jit::ptrType, "", trueCl);
- node->addIncoming(arg1, currentBlock);
- llvm::BranchInst::Create(falseCl, trueCl, test, currentBlock);
-
- currentBlock = falseCl;
- std::vector<Value*> Args;
-#ifdef MULTIPLE_VM
- std::vector<Value*> Args;
- Args.push_back(mvm::jit::constantOne);
- Value* v = GetElementPtrInst::Create(ctpCache, Args.begin(), Args.end(), "",
- currentBlock);
- v = new LoadInst(v, "", currentBlock);
- v = new BitCastInst(v, JnjvmModule::JavaClassType, "", currentBlock);
-#else
- LLVMClassInfo* LCI = (LLVMClassInfo*)module->getClassInfo(compilingClass);
- Value* v = LCI->getVar(this);
-#endif
- Args.push_back(v);
- ConstantInt* CI = ConstantInt::get(Type::Int32Ty, index);
- Args.push_back(CI);
-
- if (additionalArg)
- Args.push_back(additionalArg);
-
- Value* res = 0;
- if (doThrow) {
- res = invoke(resolver, Args, "", currentBlock);
- } else {
- res = CallInst::Create(resolver, Args.begin(), Args.end(), "",
- currentBlock);
- }
- node->addIncoming(res, currentBlock);
-
- llvm::BranchInst::Create(trueCl, currentBlock);
- currentBlock = trueCl;
-
- if (returnType == Type::Int32Ty) {
- return new PtrToIntInst(node, Type::Int32Ty, "", currentBlock);
- } else {
- return new BitCastInst(node, returnType, "", currentBlock);
- }
-#endif
}
Value* JavaJIT::getResolvedClass(uint16 index, bool clinit, bool doThrow) {
@@ -1790,7 +1722,7 @@
} else {
LLVMClassInfo* LCI = (LLVMClassInfo*)module->getClassInfo(cl);
Size = LCI->getVirtualSize(this);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
VT = LCI->getVirtualTable(this);
Cl = LCI->getVar(this);
if (!cl->isReady()) {
@@ -1862,7 +1794,7 @@
const Type* type = 0;
if (stat) {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (field->classDef->isReady()) {
object = LCI->getStaticVar(this);
type = LCI->getStaticType();
@@ -2096,7 +2028,7 @@
Value* zero = mvm::jit::constantZero;
Value* one = mvm::jit::constantOne;
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
// ok now the cache
Enveloppe* enveloppe = new Enveloppe(compilingClass->ctpInfo, index);
compilingMethod->caches.push_back(enveloppe);
@@ -2139,7 +2071,7 @@
"", ifFalse);
Value* meth = new BitCastInst(_meth, virtualPtrType, "",
currentBlock);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* cache2 = new LoadInst(cachePtr, "", currentBlock);
Value* newCtpCache = CallInst::Create(JnjvmModule::GetCtpCacheNodeFunction,
cache2, "", currentBlock);
@@ -2159,7 +2091,7 @@
_meth = new LoadInst(methPtr, "", currentBlock);
meth = new BitCastInst(_meth, virtualPtrType, "", currentBlock);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
args.pop_back();
cache = new LoadInst(cachePtr, "", currentBlock);
newCtpCache = CallInst::Create(JnjvmModule::GetCtpCacheNodeFunction,
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJIT.h Wed Oct 8 07:42:32 2008
@@ -249,15 +249,14 @@
uint16 maxLocals;
uint32 codeLen;
-#if defined(MULTIPLE_VM) || defined(MULTIPLE_GC)
+#if defined(ISOLATE) || defined(MULTIPLE_GC)
llvm::Value* isolateLocal;
-#endif
-
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
llvm::Value* ctpCache;
llvm::Value* getStaticInstanceCtp();
llvm::Value* getClassCtp();
#endif
+#endif
static const char* OpcodeNames[256];
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaJITOpcodes.cpp Wed Oct 8 07:42:32 2008
@@ -1828,7 +1828,7 @@
case NEWARRAY :
case ANEWARRAY : {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
UserClassArray* dcl = 0;
#endif
ConstantInt* sizeElement = 0;
@@ -1838,7 +1838,7 @@
if (bytecodes[i] == NEWARRAY) {
uint8 id = bytecodes[++i];
uint8 charId = arrayType(id);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
dcl = JavaThread::get()->isolate->arrayClasses[id - 4];
#else
std::vector<Value*> args;
@@ -1853,7 +1853,7 @@
sizeElement = LAI.sizeInBytesConstant;
} else {
uint16 index = readU2(bytecodes, i);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
const UTF8* className =
compilingClass->ctpInfo->resolveClassName(index);
@@ -1870,7 +1870,7 @@
TheVT = JnjvmModule::ArrayObjectVirtualTableGV;
sizeElement = mvm::jit::constantPtrSize;
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
LLVMCommonClassInfo* LCI = module->getClassInfo(dcl);
valCl = LCI->getVar(this);
#endif
@@ -1983,7 +1983,7 @@
case CHECKCAST : {
uint16 index = readU2(bytecodes, i);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
CommonClass* dcl =
compilingClass->ctpInfo->getMethodClassIfLoaded(index);
#endif
@@ -2000,7 +2000,7 @@
BranchInst::Create(ifTrue, ifFalse, cmp, currentBlock);
currentBlock = ifFalse;
Value* clVar = 0;
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
if (dcl) {
LLVMCommonClassInfo* LCI = module->getClassInfo(dcl);
clVar = LCI->getVar(this);
@@ -2038,7 +2038,7 @@
case INSTANCEOF : {
uint16 index = readU2(bytecodes, i);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
CommonClass* dcl =
compilingClass->ctpInfo->getMethodClassIfLoaded(index);
@@ -2100,7 +2100,7 @@
uint8 dim = readU1(bytecodes, i);
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
Value* valCl = getResolvedClass(index, true);
#else
JnjvmClassLoader* JCL = compilingClass->classLoader;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Wed Oct 8 07:42:32 2008
@@ -61,7 +61,7 @@
UserClass* methodCl = 0;
JavaMethod* dmeth = ocl->lookupMethod(utf8, sign->keyName, false, true,
methodCl);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
assert(dmeth->classDef->isReady() &&
"Class not ready in a virtual lookup.");
#endif
@@ -73,7 +73,7 @@
rcache->methPtr = dmeth->compiledPtr();
rcache->lastCible = (UserClass*)ocl;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
rcache->definingCtp = methodCl->getConstantPool();
#endif
@@ -135,15 +135,18 @@
return ptr;
}
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE
extern "C" void* stringLookup(UserClass* cl, uint32 index) {
UserConstantPool* ctpInfo = cl->getConstantPool();
const UTF8* utf8 = ctpInfo->UTF8AtForString(index);
JavaString* str = JavaThread::get()->isolate->UTF8ToStr(utf8);
+#ifdef ISOLATE_SHARING
ctpInfo->ctpRes[index] = str;
+#endif
return (void*)str;
}
+#ifdef ISOLATE_SHARING
extern "C" void* enveloppeLookup(UserClass* cl, uint32 index) {
UserConstantPool* ctpInfo = cl->getConstantPool();
Enveloppe* enveloppe = new Enveloppe(ctpInfo, index);
@@ -199,6 +202,8 @@
#endif
+#endif
+
#ifndef WITHOUT_VTABLE
extern "C" void* vtableLookup(UserClass* caller, uint32 index, ...) {
UserCommonClass* cl = 0;
@@ -223,7 +228,7 @@
caller->getConstantPool()->ctpRes[index] = (void*)dmeth->offset;
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
assert(dmeth->classDef->isReady() && "Class not ready in a virtual lookup.");
#endif
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaString.cpp Wed Oct 8 07:42:32 2008
@@ -19,7 +19,7 @@
JavaString* JavaString::stringDup(const UTF8*& utf8, Jnjvm* vm) {
UserClass* cl = vm->upcalls->newString;
JavaString* res = (JavaString*)malloc(cl->getVirtualSize());
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
/// Do this for now, but we will have to change it to duplicate the UTF8.
/// UTF8 that dont have a class are shared UTF8.
if (!utf8->classOf) ((UTF8*)utf8)->classOf = vm->upcalls->ArrayOfChar;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaUpcalls.cpp Wed Oct 8 07:42:32 2008
@@ -36,7 +36,7 @@
using namespace jnjvm;
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
Class* Classpath::newThread;
Class* Classpath::newVMThread;
JavaField* Classpath::assocThread;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Wed Oct 8 07:42:32 2008
@@ -22,6 +22,23 @@
using namespace jnjvm;
+
+static UserClass* getClassFromStaticMethod(JavaMethod* meth, jclass clazz) {
+#ifdef ISOLATE_SHARING
+ return (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
+#else
+ return meth->classDef;
+#endif
+}
+
+static UserClass* getClassFromVirtualMethod(JavaMethod* meth,
+ UserCommonClass* cl) {
+#ifdef ISOLATE_SHARING
+ return cl->lookupClassFromMethod(this);
+#else
+ return meth->classDef;
+#endif
+}
extern "C" const struct JNIInvokeInterface_ JNI_JavaVMTable;
extern "C" struct JNINativeInterface_ JNI_JNIEnvTable;
@@ -330,12 +347,7 @@
JavaObject* self = (JavaObject*)obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = self->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
JavaObject* res = meth->invokeJavaObjectVirtualAP(vm, cl, self, ap);
va_end(ap);
return (jobject)res;
@@ -368,12 +380,7 @@
JavaObject* self = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = self->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, self->classOf);
uint32 res = meth->invokeIntVirtualAP(vm, cl, self, ap);
va_end(ap);
return res;
@@ -466,12 +473,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
uint32 res = meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -526,12 +528,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
jfloat res = meth->invokeFloatVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -565,12 +562,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
jdouble res = meth->invokeDoubleVirtualAP(vm, cl, obj, ap);
va_end(ap);
return res;
@@ -588,12 +580,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
return meth->invokeDoubleVirtualAP(vm, cl, obj, args);
END_EXCEPTION
@@ -619,12 +606,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
meth->invokeIntVirtualAP(vm, cl, obj, ap);
va_end(ap);
@@ -640,12 +622,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
meth->invokeIntVirtualAP(vm, cl, obj, args);
END_EXCEPTION
@@ -866,12 +843,7 @@
JavaObject* obj = (JavaObject*)_obj;
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = obj->classOf->lookupClassFromMethod(meth);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromVirtualMethod(meth, obj->classOf);
meth->invokeIntSpecialAP(vm, cl, obj, ap);
va_end(ap);
@@ -1186,12 +1158,7 @@
va_start(ap, methodID);
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromStaticMethod(meth, clazz);
uint32 res = meth->invokeIntStaticAP(vm, cl, ap);
va_end(ap);
return res;
@@ -1367,12 +1334,7 @@
va_start(ap, methodID);
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromStaticMethod(meth, clazz);
meth->invokeIntStaticAP(vm, cl, ap);
va_end(ap);
@@ -1387,12 +1349,7 @@
JavaMethod* meth = (JavaMethod*)methodID;
Jnjvm* vm = JavaThread::get()->isolate;
- UserClass* cl = 0;
-#ifdef MULTIPLE_VM
- cl = (UserClass*)NativeUtil::resolvedImplClass(clazz, true);
-#else
- cl = meth->classDef;
-#endif
+ UserClass* cl = getClassFromStaticMethod(meth, clazz);
meth->invokeIntStaticAP(vm, cl, args);
END_EXCEPTION
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Wed Oct 8 07:42:32 2008
@@ -81,7 +81,7 @@
const char* Jnjvm::envSeparator = ":";
const unsigned int Jnjvm::Magic = 0xcafebabe;
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE
/// If we're not in a multi-vm environment, this can be made static.
std::vector<void*> Jnjvm::nativeLibs;
JnjvmBootstrapLoader* Jnjvm::bootstrapLoader;
@@ -852,13 +852,13 @@
isolate->hashStr = new StringMap();
isolate->globalRefsLock = mvm::Lock::allocNormal();
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
isolate->initialiseStatics();
#endif
isolate->upcalls = isolate->bootstrapLoader->upcalls;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
isolate->throwable = isolate->upcalls->newThrowable;
#endif
isolate->arrayClasses[JavaArray::T_BOOLEAN - 4] =
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Wed Oct 8 07:42:32 2008
@@ -96,7 +96,7 @@
Collector* GC;
#endif
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
UserClass* throwable;
#endif
std::map<const char, UserClassArray*> arrayClasses;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Wed Oct 8 07:42:32 2008
@@ -27,7 +27,7 @@
using namespace jnjvm;
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
JnjvmBootstrapLoader* JnjvmClassLoader::bootstrapLoader = 0;
UserClass* JnjvmBootstrapLoader::SuperArray = 0;
std::vector<UserClass*> JnjvmBootstrapLoader::InterfacesArray;
@@ -84,7 +84,7 @@
javaLoader = loader;
isolate = I;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
JavaMethod* meth = bootstrapLoader->upcalls->loadInClassLoader;
loader->classOf->lookupMethodDontThrow(meth->name, meth->type, false, true,
loadClass);
@@ -146,7 +146,7 @@
JavaString* str = isolate->UTF8ToStr(javaName);
Classpath* upcalls = bootstrapLoader->upcalls;
UserClass* forCtp = 0;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
forCtp = loadClass;
#else
forCtp = upcalls->loadInClassLoader->classDef;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.h Wed Oct 8 07:42:32 2008
@@ -206,7 +206,7 @@
isolate = 0;
}
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
UserClass* loadClass;
#endif
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmConfig.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmConfig.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmConfig.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmConfig.h Wed Oct 8 07:42:32 2008
@@ -11,7 +11,7 @@
#ifndef JNJVM_CONFIG_H
#define JNJVM_CONFIG_H
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
#define ISOLATE_STATIC
#else
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.cpp Wed Oct 8 07:42:32 2008
@@ -108,8 +108,10 @@
llvm::Function* JnjvmModule::MultiCallNewFunction = 0;
llvm::Function* JnjvmModule::GetConstantPoolAtFunction = 0;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE
llvm::Function* JnjvmModule::StringLookupFunction = 0;
+
+#ifdef ISOLATE_SHARING
llvm::Function* JnjvmModule::GetCtpCacheNodeFunction = 0;
llvm::Function* JnjvmModule::GetCtpClassFunction = 0;
llvm::Function* JnjvmModule::EnveloppeLookupFunction = 0;
@@ -119,6 +121,9 @@
llvm::Function* JnjvmModule::GetArrayClassFunction = 0;
llvm::Function* JnjvmModule::SpecialCtpLookupFunction = 0;
#endif
+
+#endif
+
llvm::Function* JnjvmModule::GetClassDelegateeFunction = 0;
llvm::Function* JnjvmModule::ArrayLengthFunction = 0;
llvm::Function* JnjvmModule::GetVTFunction = 0;
@@ -174,7 +179,7 @@
}
Value* LLVMCommonClassInfo::getDelegatee(JavaJIT* jit) {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE
if (!delegateeGV) {
JavaObject* obj = classDef->getClassDelegatee(JavaThread::get()->isolate);
Constant* cons =
@@ -214,7 +219,7 @@
VirtualTable* VT = 0;
if (meth->name->equals(Jnjvm::finalize)) {
VT = allocateVT(cl, ++meths);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
meth->offset = 0;
Function* func = cl->classLoader->TheModuleProvider->parseFunction(meth);
if (!cl->super) meth->canBeInlined = true;
@@ -461,7 +466,7 @@
return staticType;
}
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE
Value* LLVMClassInfo::getStaticVar(JavaJIT* jit) {
if (!staticVarGV) {
getStaticType();
@@ -579,7 +584,7 @@
llvmArgs.push_back(LAI.llvmType);
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
llvmArgs.push_back(JnjvmModule::JnjvmType); // vm
llvmArgs.push_back(JnjvmModule::ConstantPoolType); // cached constant pool
#endif
@@ -603,7 +608,7 @@
llvmArgs.push_back(LAI.llvmType);
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
llvmArgs.push_back(JnjvmModule::JnjvmType); // vm
llvmArgs.push_back(JnjvmModule::ConstantPoolType); // cached constant pool
#endif
@@ -630,7 +635,7 @@
llvmArgs.push_back(LAI.llvmType);
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
llvmArgs.push_back(JnjvmModule::JnjvmType); // vm
llvmArgs.push_back(JnjvmModule::ConstantPoolType); // cached constant pool
#endif
@@ -656,11 +661,11 @@
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
Value *obj, *ptr, *func;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* vm = i;
#endif
++i;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* ctp = i;
#endif
++i;
@@ -689,7 +694,7 @@
}
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Args.push_back(vm);
Args.push_back(ctp);
#endif
@@ -716,11 +721,11 @@
BasicBlock* currentBlock = BasicBlock::Create("enter", res);
Function::arg_iterator i = res->arg_begin();
Value *obj, *ap, *func;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* vm = i;
#endif
++i;
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Value* ctp = i;
#endif
++i;
@@ -739,7 +744,7 @@
Args.push_back(new VAArgInst(ap, LAI.llvmType, "", currentBlock));
}
-#if defined(MULTIPLE_VM)
+#if defined(ISOLATE_SHARING)
Args.push_back(vm);
Args.push_back(ctp);
#endif
@@ -1021,8 +1026,9 @@
ClearExceptionFunction = module->getFunction("JavaThreadClearException");
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE
StringLookupFunction = module->getFunction("stringLookup");
+#ifdef ISOLATE_SHARING
EnveloppeLookupFunction = module->getFunction("enveloppeLookup");
GetCtpCacheNodeFunction = module->getFunction("getCtpCacheNode");
GetCtpClassFunction = module->getFunction("getCtpClass");
@@ -1033,6 +1039,7 @@
SpecialCtpLookupFunction = module->getFunction("specialCtpLookup");
GetArrayClassFunction = module->getFunction("getArrayClass");
#endif
+#endif
#ifdef SERVICE_VM
AquireObjectInSharedDomainFunction =
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModule.h Wed Oct 8 07:42:32 2008
@@ -345,8 +345,9 @@
#endif
static llvm::Function* MultiCallNewFunction;
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE
static llvm::Function* StringLookupFunction;
+#ifdef ISOLATE_SHARING
static llvm::Function* GetCtpCacheNodeFunction;
static llvm::Function* GetCtpClassFunction;
static llvm::Function* EnveloppeLookupFunction;
@@ -356,6 +357,7 @@
static llvm::Function* SpecialCtpLookupFunction;
static llvm::Function* GetArrayClassFunction;
#endif
+#endif
static llvm::Function* GetClassDelegateeFunction;
static llvm::Function* ArrayLengthFunction;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp Wed Oct 8 07:42:32 2008
@@ -40,7 +40,7 @@
JavaMethod* meth = cl->lookupMethod(utf8, sign->keyName, isStatic, true,
methodCl);
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
// A multi environment would have already initialized the class. Besides,
// a callback does not involve UserClass, therefore we wouldn't know
// which class to initialize.
@@ -97,7 +97,7 @@
LLVMMethodInfo* LMI = ((JnjvmModule*)TheModule)->getMethodInfo(meth);
uint64_t offset = LMI->getOffset()->getZExtValue();
assert(meth->classDef->isResolved() && "Class not resolved");
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
assert(meth->classDef->isReady() && "Class not ready");
#endif
assert(meth->classDef->virtualVT && "Class has no VT");
@@ -105,7 +105,7 @@
"The method's offset is greater than the virtual table size");
((void**)meth->classDef->virtualVT)[offset] = val;
} else {
-#ifndef MULTIPLE_VM
+#ifndef ISOLATE_SHARING
meth->classDef->initialiseClass(JavaThread::get()->isolate);
#endif
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/LowerConstantCalls.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/LowerConstantCalls.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/LowerConstantCalls.cpp Wed Oct 8 07:42:32 2008
@@ -247,7 +247,7 @@
}
std::vector<Value*> indexes; //[3];
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
ConstantInt* Cons = dyn_cast<ConstantInt>(Index);
assert(CI && "Wrong use of GetConstantPoolAt");
uint64 val = Cons->getZExtValue();
@@ -318,7 +318,7 @@
}
#endif
-#ifdef MULTIPLE_VM
+#ifdef ISOLATE_SHARING
else if (V == jnjvm::JnjvmModule::GetCtpClassFunction) {
Changed = true;
Value* val = Call.getArgument(0);
Modified: vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp?rev=57293&r1=57292&r2=57293&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/VirtualTables.cpp Wed Oct 8 07:42:32 2008
@@ -21,7 +21,7 @@
#ifdef SERVICE_VM
#include "ServiceDomain.h"
#endif
-#ifdef MULTIPLE_VM
+#ifdef CODE_SHARING
#include "SharedMaps.h"
#include "IsolateSharedLoader.h"
#endif
@@ -40,7 +40,7 @@
INIT(ClassMap);
INIT(JnjvmBootstrapLoader);
INIT(JnjvmClassLoader);
-#ifdef MULTIPLE_VM
+#if defined(ISOLATE_SHARING)
INIT(JnjvmSharedLoader);
INIT(SharedClassByteMap);
INIT(UserClass);
@@ -69,7 +69,7 @@
void CommonClass::TRACER {
classLoader->MARK_AND_TRACE;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE)
delegatee->MARK_AND_TRACE;
#endif
}
@@ -77,7 +77,7 @@
void Class::TRACER {
CommonClass::PARENT_TRACER;
bytes->MARK_AND_TRACE;
-#ifndef MULTIPLE_VM
+#if !defined(ISOLATE)
_staticInstance->MARK_AND_TRACE;
#endif
}
@@ -111,7 +111,7 @@
TRACE_VECTOR(JavaObject*, gc_allocator, globalRefs);
bootstrapThread->MARK_AND_TRACE;
bootstrapLoader->MARK_AND_TRACE;
-#ifdef MULTIPLE_VM
+#if defined(ISOLATE_SHARING)
JnjvmSharedLoader::sharedLoader->MARK_AND_TRACE;
#endif
}
@@ -150,7 +150,7 @@
#undef TRACE_DELEGATEE
}
-#ifdef MULTIPLE_VM
+#if defined(ISOLATE_SHARING)
void UserClass::TRACER {
classLoader->MARK_AND_TRACE;
delegatee->MARK_AND_TRACE;
More information about the vmkit-commits
mailing list