[vmkit-commits] [vmkit] r56152 - in /vmkit/branches/isolate/lib/JnJVM/VMCore: JavaRuntimeJIT.cpp Jnjvm.cpp Jnjvm.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Fri Sep 12 06:53:16 PDT 2008
Author: geoffray
Date: Fri Sep 12 08:53:16 2008
New Revision: 56152
URL: http://llvm.org/viewvc/llvm-project?rev=56152&view=rev
Log:
Implement isolate specific runtime functions.
New signature of function classCastException.
Modified:
vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp
vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h
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=56152&r1=56151&r2=56152&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Fri Sep 12 08:53:16 2008
@@ -150,6 +150,35 @@
ctpInfo->ctpRes[index] = enveloppe;
return (void*)enveloppe;
}
+
+extern "C" void* staticCtpLookup(UserClass* cl, uint32 index) {
+ UserConstantPool* ctpInfo = cl->getConstantPool();
+ JavaConstantPool* shared = ctpInfo->getSharedPool();
+ uint32 clIndex = shared->getClassIndexFromMethod(index);
+ UserClass* refCl = (UserClass*)ctpInfo->loadClass(clIndex);
+ refCl->initialiseClass(JavaThread::get()->isolate);
+
+ CommonClass* baseCl = 0;
+ const UTF8* utf8 = 0;
+ Signdef* sign = 0;
+
+ shared->resolveMethod(index, baseCl, utf8, sign);
+ UserClass* methodCl = 0;
+ refCl->lookupMethod(utf8, sign->keyName, isStatic, true, methodCl);
+ ctpInfo->ctpRes[index] = methodCl->getConstantPool();
+ shared->ctpRes[clIndex] = refCl->classDef;
+ return (void*)methodCl->getConstantPool();
+}
+
+extern "C" UserClassArray* getArrayClass(UserCommonClass* cl) {
+ JnjvmClassLoader* JCL = cl->classLoader;
+ const UTF8* arrayName =
+ AssessorDesc::constructArrayName(JCL, 0, 1, cl->getName());
+
+ UserClassArray* dcl = JCL->constructArray(arrayName);
+ return dcl;
+}
+
#endif
#ifndef WITHOUT_VTABLE
@@ -239,7 +268,7 @@
}
extern "C" void jnjvmClassCastException(JavaObject* obj, UserCommonClass* cl) {
- JavaThread::get()->isolate->classCastException("");
+ JavaThread::get()->isolate->classCastException(obj, cl);
}
extern "C" void indexOutOfBoundsException(JavaObject* obj, sint32 index) {
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp?rev=56152&r1=56151&r2=56152&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.cpp Fri Sep 12 08:53:16 2008
@@ -263,7 +263,7 @@
msg);
}
-void Jnjvm::classCastException(const char* msg) {
+void Jnjvm::classCastException(JavaObject* obj, UserCommonClass* cl) {
error(upcalls->ClassCastException,
upcalls->InitClassCastException,
msg);
Modified: vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h?rev=56152&r1=56151&r2=56152&view=diff
==============================================================================
--- vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/branches/isolate/lib/JnJVM/VMCore/Jnjvm.h Fri Sep 12 08:53:16 2008
@@ -292,7 +292,7 @@
void illegalArgumentExceptionForField(JavaField* field, UserCommonClass* required,
UserCommonClass* given);
void illegalArgumentException(const char* msg);
- void classCastException(const char* msg);
+ void classCastException(JavaObject* obj, UserCommonClass* cl);
void unknownError(const char* fmt, ...);
void noSuchFieldError(CommonClass* cl, const UTF8* name);
void noSuchMethodError(CommonClass* cl, const UTF8* name);
More information about the vmkit-commits
mailing list