[vmkit-commits] [vmkit] r71944 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp JavaClass.h Jnjvm.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sat May 16 06:20:07 PDT 2009
Author: geoffray
Date: Sat May 16 08:20:06 2009
New Revision: 71944
URL: http://llvm.org/viewvc/llvm-project?rev=71944&view=rev
Log:
Give a nice error message to UnsatisfiedLinkError.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=71944&r1=71943&r2=71944&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sat May 16 08:20:06 2009
@@ -1210,6 +1210,31 @@
return false;
}
+
+ArrayUInt16* JavaMethod::toString() const {
+ Jnjvm* vm = JavaThread::get()->getJVM();
+ uint32 size = classDef->name->size + name->size + type->size + 1;
+ ArrayUInt16* res = (ArrayUInt16*)vm->upcalls->ArrayOfChar->doNew(size, vm);
+ uint32 i = 0;
+
+ for (sint32 j = 0; j < classDef->name->size; ++j) {
+ if (classDef->name->elements[j] == '/') res->elements[i++] = '.';
+ else res->elements[i++] = classDef->name->elements[j];
+ }
+
+ res->elements[i++] = '.';
+
+ for (sint32 j = 0; j < name->size; ++j) {
+ res->elements[i++] = name->elements[j];
+ }
+
+ for (sint32 j = 0; j < type->size; ++j) {
+ res->elements[i++] = type->elements[j];
+ }
+
+ return res;
+}
+
bool UserClass::needsInitialisationCheck() {
if (!isClassRead()) return true;
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=71944&r1=71943&r2=71944&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Sat May 16 08:20:06 2009
@@ -29,6 +29,7 @@
class ArrayObject;
class ArrayUInt8;
+class ArrayUInt16;
class Enveloppe;
class Class;
class ClassArray;
@@ -1168,6 +1169,10 @@
/// printString - Output a string representation of the method.
///
const char* printString() const;
+
+ /// toString - Return an array of chars, suitable for creating a string.
+ ///
+ ArrayUInt16* toString() const;
/// jniConsFromMeth - Construct the JNI name of this method as if
/// there is no other function in the class with the same name.
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=71944&r1=71943&r2=71944&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Sat May 16 08:20:06 2009
@@ -333,7 +333,7 @@
JavaObject* Jnjvm::CreateUnsatisfiedLinkError(JavaMethod* meth) {
return CreateError(upcalls->UnsatisfiedLinkError,
upcalls->InitUnsatisfiedLinkError,
- (JavaString*)0);
+ constructString(meth->toString()));
}
JavaObject* Jnjvm::CreateArithmeticException() {
More information about the vmkit-commits
mailing list