[vmkit-commits] [vmkit] r55595 - in /vmkit/branches/isolate/lib/JnJVM: Isolate/IsolateCommonClass.cpp Isolate/IsolateCommonClass.h VMCore/JavaClass.h VMCore/JavaConstantPool.cpp VMCore/JavaJIT.cpp VMCore/JavaRuntimeJIT.cpp VMCore/JnjvmModuleProvider.cpp VMCore/LowerConstantCalls.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sun Aug 31 22:47:17 PDT 2008
Author: geoffray
Date: Mon Sep 1 00:47:17 2008
New Revision: 55595
URL: http://llvm.org/viewvc/llvm-project?rev=55595&view=rev
Log:
Small bugfixes, assertion correction and improvements for the isolate
environment.
Modified:
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/LowerConstantCalls.cpp
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.cpp Mon Sep 1 00:47:17 2008
@@ -94,6 +94,8 @@
def->status = prepared;
status = prepared;
def->classLoader->TheModule->resolveVirtualClass(def);
+ virtualSize = def->virtualSize;
+ virtualVT = def->virtualVT;
def->status = resolved;
status = resolved;
classDef->broadcastClass();
@@ -159,7 +161,7 @@
temp = loader->loadName(name, true, false);
}
ctpRes[index] = temp;
- ctpInfo->ctpRes[index] = getClass()->classDef;
+ ctpInfo->ctpRes[index] = temp->classDef;
}
return temp;
}
Modified: vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/Isolate/IsolateCommonClass.h Mon Sep 1 00:47:17 2008
@@ -188,7 +188,7 @@
UserCommonClass*& fieldCl);
- uint64 getVirtualSize() {
+ uint32 getVirtualSize() {
return virtualSize;
}
@@ -319,7 +319,7 @@
return ctpInfo;
}
- uint64 getStaticSize() {
+ uint32 getStaticSize() {
return ((Class*)classDef)->getStaticSize();
}
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaClass.h Mon Sep 1 00:47:17 2008
@@ -963,7 +963,7 @@
///
#define GETFIELD(TYPE, TYPE_NAME) \
TYPE get##TYPE_NAME##Field(JavaObject* obj) { \
- assert((classDef->getStatus()) >= inClinit); \
+ assert(classDef->isResolved()); \
void* ptr = (void*)((uint64)obj + ptrOffset); \
return ((TYPE*)ptr)[0]; \
}
@@ -972,7 +972,7 @@
///
#define SETFIELD(TYPE, TYPE_NAME) \
void set##TYPE_NAME##Field(JavaObject* obj, TYPE val) { \
- assert((classDef->getStatus()) >= inClinit); \
+ assert(classDef->isResolved()); \
void* ptr = (void*)((uint64)obj + ptrOffset); \
((TYPE*)ptr)[0] = val; \
}
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaConstantPool.cpp Mon Sep 1 00:47:17 2008
@@ -434,7 +434,7 @@
assert(sign && "No cached signature after JITting");
utf8 = UTF8At(ctpDef[ntIndex] >> 16);
cl = loadClass(entry >> 16);
- cl->resolveClass();
+ assert(cl && cl->isResolved() && "No class after loadClass");
}
void JavaConstantPool::resolveField(uint32 index, CommonClass*& cl,
@@ -445,7 +445,7 @@
assert(sign && "No cached Typedef after JITting");
utf8 = UTF8At(ctpDef[ntIndex] >> 16);
cl = loadClass(entry >> 16);
- cl->resolveClass();
+ assert(cl && cl->isResolved() && "No class after loadClass");
}
JavaField* JavaConstantPool::lookupField(uint32 index, bool stat) {
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaJIT.cpp Mon Sep 1 00:47:17 2008
@@ -2060,6 +2060,12 @@
"", ifFalse);
Value* meth = new BitCastInst(_meth, virtualPtrType, "",
currentBlock);
+#ifdef MULTIPLE_VM
+ cache = new LoadInst(cachePtr, "", currentBlock);
+ Value* newCtpCache = CallInst::Create(JnjvmModule::GetCtpCacheNodeFunction,
+ cache, "", currentBlock);
+ args.push_back(newCtpCache);
+#endif
Value* ret = invoke(meth, args, "", currentBlock);
if (node) {
node->addIncoming(ret, currentBlock);
@@ -2075,9 +2081,10 @@
meth = new BitCastInst(_meth, virtualPtrType, "", currentBlock);
#ifdef MULTIPLE_VM
+ args.pop_back();
cache = new LoadInst(cachePtr, "", currentBlock);
- Value* newCtpCache = CallInst::Create(JnjvmModule::GetCtpCacheNodeFunction,
- cache, "", currentBlock);
+ newCtpCache = CallInst::Create(JnjvmModule::GetCtpCacheNodeFunction,
+ cache, "", currentBlock);
args.push_back(newCtpCache);
#endif
ret = invoke(meth, args, "", currentBlock);
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Mon Sep 1 00:47:17 2008
@@ -58,9 +58,13 @@
}
if (!rcache) {
+#ifndef MULTIPLE_VM
JavaMethod* dmeth = ocl->lookupMethod(utf8, sign->keyName, false, true);
assert(dmeth->classDef->isReady() &&
"Class not ready in a virtual lookup.");
+#else
+ JavaMethod* dmeth = ocl->lookupMethod(utf8, sign->keyName, false, true);
+#endif
if (cache->methPtr) {
rcache = new CacheNode(enveloppe);
} else {
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JnjvmModuleProvider.cpp Mon Sep 1 00:47:17 2008
@@ -98,7 +98,9 @@
LLVMMethodInfo* LMI = ((JnjvmModule*)TheModule)->getMethodInfo(meth);
uint64_t offset = LMI->getOffset()->getZExtValue();
assert(meth->classDef->isResolved() && "Class not resolved");
+#ifndef MULTIPLE_VM
assert(meth->classDef->isReady() && "Class not ready");
+#endif
assert(meth->classDef->virtualVT && "Class has no VT");
assert(meth->classDef->virtualTableSize > offset &&
"The method's offset is greater than the virtual table size");
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/LowerConstantCalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/LowerConstantCalls.cpp?rev=55595&r1=55594&r2=55595&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/LowerConstantCalls.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/LowerConstantCalls.cpp Mon Sep 1 00:47:17 2008
@@ -330,6 +330,17 @@
Value* VT = new LoadInst(VTPtr, "", CI);
CI->replaceAllUsesWith(VT);
CI->eraseFromParent();
+ } else if (V == jnjvm::JnjvmModule::GetCtpCacheNodeFunction) {
+ Changed = true;
+ Value* val = Call.getArgument(0);
+ std::vector<Value*> indexes;
+ indexes.push_back(mvm::jit::constantZero);
+ indexes.push_back(mvm::jit::constantFour);
+ Value* VTPtr = GetElementPtrInst::Create(val, indexes.begin(),
+ indexes.end(), "", CI);
+ Value* VT = new LoadInst(VTPtr, "", CI);
+ CI->replaceAllUsesWith(VT);
+ CI->eraseFromParent();
} else if (V == jnjvm::JnjvmModule::GetJnjvmArrayClassFunction) {
Changed = true;
Value* val = Call.getArgument(0);
More information about the vmkit-commits
mailing list