[vmkit-commits] [vmkit] r145091 - in /vmkit/trunk/lib/j3: ClassLib/GNUClasspath/JavaUpcalls.cpp ClassLib/GNUClasspath/JavaUpcalls.h ClassLib/OpenJDK/JavaUpcalls.h VMCore/JavaObject.cpp VMCore/Jnjvm.cpp VMCore/Jnjvm.h
Will Dietz
wdietz2 at illinois.edu
Tue Nov 22 15:55:03 PST 2011
Author: wdietz2
Date: Tue Nov 22 17:55:02 2011
New Revision: 145091
URL: http://llvm.org/viewvc/llvm-project?rev=145091&view=rev
Log:
Add support for CloneNotSupportedException, do so from JavaObject::clone
Modified:
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.cpp
vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.h
vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
vmkit/trunk/lib/j3/VMCore/Jnjvm.h
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.cpp?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.cpp Tue Nov 22 17:55:02 2011
@@ -93,6 +93,7 @@
JavaField* Classpath::vmdataClassLoader;
JavaMethod* Classpath::InitDirectByteBuffer;
Class* Classpath::newClassLoader;
+Class* Classpath::cloneableClass;
JavaField* Classpath::boolValue;
@@ -152,6 +153,7 @@
Class* Classpath::UnknownError;
Class* Classpath::ClassNotFoundException;
Class* Classpath::ArithmeticException;
+Class* Classpath::CloneNotSupportedException;
JavaMethod* Classpath::InitInvocationTargetException;
JavaMethod* Classpath::InitArrayStoreException;
@@ -185,6 +187,7 @@
JavaMethod* Classpath::InitUnknownError;
JavaMethod* Classpath::InitClassNotFoundException;
JavaMethod* Classpath::InitArithmeticException;
+JavaMethod* Classpath::InitCloneNotSupportedException;
JavaMethod* Classpath::InitObject;
JavaMethod* Classpath::FinalizeObject;
JavaMethod* Classpath::IntToString;
@@ -783,6 +786,7 @@
UPCALL_CLASS_EXCEPTION(loader, UnknownError);
UPCALL_CLASS_EXCEPTION(loader, ClassNotFoundException);
UPCALL_CLASS_EXCEPTION(loader, ArithmeticException);
+ UPCALL_CLASS_EXCEPTION(loader, CloneNotSupportedException);
UPCALL_METHOD_EXCEPTION(loader, InvocationTargetException);
UPCALL_METHOD_EXCEPTION(loader, ArrayStoreException);
@@ -816,6 +820,7 @@
UPCALL_METHOD_EXCEPTION(loader, UnknownError);
UPCALL_METHOD_EXCEPTION(loader, ClassNotFoundException);
UPCALL_METHOD_EXCEPTION(loader, ArithmeticException);
+ UPCALL_METHOD_EXCEPTION(loader, CloneNotSupportedException);
UPCALL_METHOD_WITH_EXCEPTION(loader, NoClassDefFoundError);
UPCALL_METHOD_WITH_EXCEPTION(loader, ExceptionInInitializerError);
@@ -841,6 +846,8 @@
SystemClass = UPCALL_CLASS(loader, "java/lang/System");
EnumClass = UPCALL_CLASS(loader, "java/lang/Enum");
+ cloneableClass = UPCALL_CLASS(loader, "java/lang/Cloneable");
+
newThread =
UPCALL_CLASS(loader, "java/lang/Thread");
Modified: vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.h?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/GNUClasspath/JavaUpcalls.h Tue Nov 22 17:55:02 2011
@@ -103,6 +103,7 @@
ISOLATE_STATIC UserClass* newDirectByteBuffer;
ISOLATE_STATIC JavaMethod* InitDirectByteBuffer;
ISOLATE_STATIC JavaField* vmdataClassLoader;
+ ISOLATE_STATIC UserClass* cloneableClass;
ISOLATE_STATIC UserClass* enumClass;
ISOLATE_STATIC JavaField* boolValue;
@@ -188,6 +189,7 @@
ISOLATE_STATIC UserClass* UnknownError;
ISOLATE_STATIC UserClass* ClassNotFoundException;
ISOLATE_STATIC UserClass* ArithmeticException;
+ ISOLATE_STATIC UserClass* CloneNotSupportedException;
ISOLATE_STATIC JavaMethod* InitInvocationTargetException;
ISOLATE_STATIC JavaMethod* InitArrayStoreException;
@@ -221,6 +223,7 @@
ISOLATE_STATIC JavaMethod* InitUnknownError;
ISOLATE_STATIC JavaMethod* InitClassNotFoundException;
ISOLATE_STATIC JavaMethod* InitArithmeticException;
+ ISOLATE_STATIC JavaMethod* InitCloneNotSupportedException;
ISOLATE_STATIC JavaMethod* SystemArraycopy;
ISOLATE_STATIC JavaMethod* VMSystemArraycopy;
Modified: vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/j3/ClassLib/OpenJDK/JavaUpcalls.h Tue Nov 22 17:55:02 2011
@@ -98,7 +98,7 @@
ISOLATE_STATIC UserClass* newDirectByteBuffer;
ISOLATE_STATIC JavaMethod* InitDirectByteBuffer;
ISOLATE_STATIC JavaField* vmdataClassLoader;
- ISOLATE_STATIC UserClass* cloneableClass;
+ ISOLATE_STATIC UserClass* cloneableClass;
ISOLATE_STATIC UserClass* enumClass;
ISOLATE_STATIC JavaField* boolValue;
Modified: vmkit/trunk/lib/j3/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/JavaObject.cpp?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/JavaObject.cpp Tue Nov 22 17:55:02 2011
@@ -155,8 +155,8 @@
// If this doesn't inherit the Cloneable interface, throw exception
// TODO: Add support in both class libraries for the upcalls fields used here
- //if (!JavaObject::instanceOf(src, vm->upcalls->cloneableClass))
- // vm->cloneNotSupportedException();
+ if (!JavaObject::instanceOf(src, vm->upcalls->cloneableClass))
+ vm->cloneNotSupportedException();
if (cl->isArray()) {
UserClassArray* array = cl->asArrayClass();
Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.cpp Tue Nov 22 17:55:02 2011
@@ -301,6 +301,11 @@
upcalls->InitNullPointerException, (JavaString*)0);
}
+void Jnjvm::cloneNotSupportedException() {
+ error(upcalls->CloneNotSupportedException,
+ upcalls->InitCloneNotSupportedException, (JavaString*)0);
+}
+
JavaObject* Jnjvm::CreateIndexOutOfBoundsException(sint32 entry) {
JavaString* str = NULL;
llvm_gcroot(str, 0);
@@ -1153,6 +1158,8 @@
LOAD_CLASS(upcalls->ArithmeticException);
LOAD_CLASS(upcalls->InstantiationException);
LOAD_CLASS(upcalls->SystemClass);
+ LOAD_CLASS(upcalls->cloneableClass);
+ LOAD_CLASS(upcalls->CloneNotSupportedException);
#undef LOAD_CLASS
// Implementation-specific end-of-bootstrap initialization
Modified: vmkit/trunk/lib/j3/VMCore/Jnjvm.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/j3/VMCore/Jnjvm.h?rev=145091&r1=145090&r2=145091&view=diff
==============================================================================
--- vmkit/trunk/lib/j3/VMCore/Jnjvm.h (original)
+++ vmkit/trunk/lib/j3/VMCore/Jnjvm.h Tue Nov 22 17:55:02 2011
@@ -286,6 +286,7 @@
void classNotFoundException(JavaString* str);
void noClassDefFoundError(UserClass* cl, const UTF8* name);
void classFormatError(const char* str);
+ void cloneNotSupportedException();
virtual void nullPointerException();
virtual void stackOverflowError();
More information about the vmkit-commits
mailing list