[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