[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