[vmkit-commits] [vmkit] r71948 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaClass.cpp JavaRuntimeJIT.cpp Jni.cpp Jnjvm.cpp Jnjvm.h JnjvmClassLoader.cpp Reader.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sat May 16 07:02:40 PDT 2009
Author: geoffray
Date: Sat May 16 09:02:40 2009
New Revision: 71948
URL: http://llvm.org/viewvc/llvm-project?rev=71948&view=rev
Log:
No more unknown errors! Just aborts because we haven't verified the
class file when it's loaded and that's bad.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.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/Reader.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Sat May 16 09:02:40 2009
@@ -651,8 +651,10 @@
const UTF8* utf8 = ctpInfo->UTF8At(ctpInfo->ctpDef[idx]);
InitField(obj, (JavaObject*)ctpInfo->resolveString(utf8, idx));
} else {
- JavaThread::get()->getJVM()->
- unknownError("unknown constant %s\n", type->printString());
+ fprintf(stderr, "I haven't verified your class file and it's malformed:"
+ " unknown constant %s!\n",
+ type->printString());
+ abort();
}
}
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaRuntimeJIT.cpp Sat May 16 09:02:40 2009
@@ -295,26 +295,23 @@
// Throws if one of the dimension is negative.
static JavaArray* multiCallNewIntern(UserClassArray* cl, uint32 len,
sint32* dims, Jnjvm* vm) {
- if (len <= 0) JavaThread::get()->getJVM()->unknownError("Can not happen");
+ assert(len <= 0 && "Negative size given by VMKit");
JavaArray* _res = cl->doNew(dims[0], vm);
if (len > 1) {
ArrayObject* res = (ArrayObject*)_res;
UserCommonClass* _base = cl->baseClass();
- if (_base->isArray()) {
- UserClassArray* base = (UserClassArray*)_base;
- if (dims[0] > 0) {
- for (sint32 i = 0; i < dims[0]; ++i) {
- res->elements[i] = multiCallNewIntern(base, (len - 1),
- &dims[1], vm);
- }
- } else {
- for (uint32 i = 1; i < len; ++i) {
- sint32 p = dims[i];
- if (p < 0) JavaThread::get()->getJVM()->negativeArraySizeException(p);
- }
+ assert(_base->isArray() && "Base class not an array");
+ UserClassArray* base = (UserClassArray*)_base;
+ if (dims[0] > 0) {
+ for (sint32 i = 0; i < dims[0]; ++i) {
+ res->elements[i] = multiCallNewIntern(base, (len - 1),
+ &dims[1], vm);
}
} else {
- JavaThread::get()->getJVM()->unknownError("Can not happen");
+ for (uint32 i = 1; i < len; ++i) {
+ sint32 p = dims[i];
+ if (p < 0) JavaThread::get()->getJVM()->negativeArraySizeException(p);
+ }
}
}
return _res;
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jni.cpp Sat May 16 09:02:40 2009
@@ -92,9 +92,6 @@
return (jmethodID)((JavaObjectMethod*)meth)->getInternalMethod();
} else if (cl == upcalls->newMethod) {
return (jmethodID)((JavaObjectConstructor*)meth)->getInternalMethod();
- } else {
- vm->unknownError("Not a constructor or a method: %s",
- meth->getClass()->printString());
}
END_JNI_EXCEPTION
@@ -217,7 +214,8 @@
Jnjvm* vm = JavaThread::get()->getJVM();
UserCommonClass* cl =
UserCommonClass::resolvedImplClass(vm, (JavaObject*)clazz, true);
- if (cl->isArray()) JavaThread::get()->getJVM()->unknownError("implement me");
+ if (cl->isArray()) return 0;
+
return (jobject)((UserClass*)cl)->doNew(JavaThread::get()->getJVM());
END_JNI_EXCEPTION
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Sat May 16 09:02:40 2009
@@ -574,12 +574,6 @@
}
-void Jnjvm::unknownError(const char* fmt, ...) {
- error(upcalls->UnknownError,
- upcalls->InitUnknownError,
- fmt);
-}
-
void Jnjvm::classFormatError(const char* msg, ...) {
error(upcalls->ClassFormatError,
upcalls->InitClassFormatError,
Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.h Sat May 16 09:02:40 2009
@@ -275,7 +275,6 @@
void noClassDefFoundError(const UTF8* name);
void classNotFoundException(JavaString* str);
- void unknownError(const char* fmt, ...);
void classFormatError(const char* fmt, ...);
/// asciizToStr - Constructs a java/lang/String object from the given asciiz.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JnjvmClassLoader.cpp Sat May 16 09:02:40 2009
@@ -378,7 +378,8 @@
if (!cl && doThrow) {
Jnjvm* vm = JavaThread::get()->getJVM();
if (name->equals(bootstrapLoader->NoClassDefFoundError)) {
- vm->unknownError("Unable to load NoClassDefFoundError");
+ fprintf(stderr, "Unable to load NoClassDefFoundError");
+ abort();
}
vm->noClassDefFoundError(name);
}
@@ -686,12 +687,11 @@
static void typeError(const UTF8* name, short int l) {
if (l != 0) {
- JavaThread::get()->getJVM()->
- unknownError("wrong type %d in %s", l, name->printString());
+ fprintf(stderr, "wrong type %d in %s", l, name->printString());
} else {
- JavaThread::get()->getJVM()->
- unknownError("wrong type %s", name->printString());
+ fprintf(stderr, "wrong type %s", name->printString());
}
+ abort();
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp?rev=71948&r1=71947&r2=71948&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Reader.cpp Sat May 16 09:02:40 2009
@@ -65,8 +65,7 @@
else if (from == SeekEnd) n = end + pos;
- if ((n < start) || (n > end))
- JavaThread::get()->getJVM()->unknownError("out of range %d %d", n, end);
+ assert(n >= start && n <= end && "out of range");
cursor = n;
}
More information about the vmkit-commits
mailing list