[vmkit-commits] [vmkit] r139482 - in /vmkit/trunk/lib/J3: Classpath/ClasspathMethod.inc Classpath/ClasspathVMClass.inc Classpath/JavaUpcalls.cpp Classpath/JavaUpcalls.h Compiler/JavaAOTCompiler.cpp LLVMRuntime/runtime-single.ll VMCore/JavaAccess.h VMCore/JavaClass.cpp VMCore/JavaClass.h

Nicolas Geoffray nicolas.geoffray at lip6.fr
Sun Sep 11 09:22:57 PDT 2011


Author: geoffray
Date: Sun Sep 11 11:22:56 2011
New Revision: 139482

URL: http://llvm.org/viewvc/llvm-project?rev=139482&view=rev
Log:
Small fixes again.


Modified:
    vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
    vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
    vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
    vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h
    vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll
    vmkit/trunk/lib/J3/VMCore/JavaAccess.h
    vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
    vmkit/trunk/lib/J3/VMCore/JavaClass.h

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathMethod.inc Sun Sep 11 11:22:56 2011
@@ -168,13 +168,8 @@
       exc = th->getJavaException();                                            \
     } END_CATCH;                                                               \
     if (exc) {                                                                 \
-      if (JavaObject::getClass(exc)->isAssignableFrom(                         \
-              vm->upcalls->newException)) {                                    \
-        th->clearException();                                                  \
-        th->getJVM()->invocationTargetException(exc);                          \
-      } else {                                                                 \
-        th->throwPendingException();                                           \
-      }                                                                        \
+      th->clearException();                                                    \
+      th->getJVM()->invocationTargetException(exc);                            \
       return NULL;                                                             \
     }
     

Modified: vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc (original)
+++ vmkit/trunk/lib/J3/Classpath/ClasspathVMClass.inc Sun Sep 11 11:22:56 2011
@@ -216,6 +216,11 @@
   UserCommonClass* cl = UserCommonClass::resolvedImplClass(vm, Cl, false);
   res = cl->getAccess();
 
+  if (isEnum(res) && cl->getSuper() != vm->upcalls->EnumClass) {
+    // javac may put that flag to inner classes of enum classes. 
+    res &= ~ACC_ENUM;
+  }
+
   END_NATIVE_EXCEPTION
   return res;
 }

Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.cpp Sun Sep 11 11:22:56 2011
@@ -190,6 +190,7 @@
 JavaMethod* Classpath::SystemArraycopy;
 JavaMethod* Classpath::VMSystemArraycopy;
 Class*      Classpath::SystemClass;
+Class*      Classpath::EnumClass;
 
 JavaMethod* Classpath::ErrorWithExcpNoClassDefFoundError;
 JavaMethod* Classpath::ErrorWithExcpExceptionInInitializerError;
@@ -838,6 +839,7 @@
                                   ACC_STATIC);
   
   SystemClass = UPCALL_CLASS(loader, "java/lang/System");
+  EnumClass = UPCALL_CLASS(loader, "java/lang/Enum");
 
   newThread = 
     UPCALL_CLASS(loader, "java/lang/Thread");

Modified: vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h (original)
+++ vmkit/trunk/lib/J3/Classpath/JavaUpcalls.h Sun Sep 11 11:22:56 2011
@@ -103,6 +103,7 @@
   ISOLATE_STATIC UserClass*  newDirectByteBuffer;
   ISOLATE_STATIC JavaMethod* InitDirectByteBuffer;
   ISOLATE_STATIC JavaField*  vmdataClassLoader;
+  ISOLATE_STATIC UserClass*  enumClass;
 
   ISOLATE_STATIC JavaField* boolValue;
   ISOLATE_STATIC JavaField* byteValue;
@@ -264,6 +265,8 @@
   ISOLATE_STATIC JavaMethod* EnqueueReference;
   ISOLATE_STATIC Class*      newReference;
 
+  ISOLATE_STATIC UserClass*  EnumClass;
+
 private:
   ISOLATE_STATIC void CreateJavaThread(Jnjvm* vm, JavaThread* myth,
                                        const char* name, JavaObject* Group);

Modified: vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/J3/Compiler/JavaAOTCompiler.cpp Sun Sep 11 11:22:56 2011
@@ -896,7 +896,7 @@
   CommonClassElts.push_back(ConstantArray::get(ATy, TCM));
   
   // access
-  CommonClassElts.push_back(ConstantInt::get(Type::getInt16Ty(getLLVMContext()), cl->access));
+  CommonClassElts.push_back(ConstantInt::get(Type::getInt32Ty(getLLVMContext()), cl->access));
  
   // interfaces
   if (cl->nbInterfaces) {

Modified: vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/J3/LLVMRuntime/runtime-single.ll Sun Sep 11 11:22:56 2011
@@ -2,7 +2,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-%JavaCommonClass = type { [1 x %JavaObject*], i16,
+%JavaCommonClass = type { [1 x %JavaObject*], i32,
                           %JavaClass**, i16, %UTF8*, %JavaClass*, i8*, %VT* }
 
 %ClassBytes = type { i32, i8* }

Modified: vmkit/trunk/lib/J3/VMCore/JavaAccess.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaAccess.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaAccess.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaAccess.h Sun Sep 11 11:22:56 2011
@@ -32,10 +32,11 @@
 #define ACC_ABSTRACT     0x0400
 #define ACC_STRICT       0x0800
 #define ACC_SYNTHETIC    0x1000
+#define ACC_ENUM         0x4000
 
-#define JNJVM_CLASS      0x1000
-#define JNJVM_ARRAY      0x2000
-#define JNJVM_PRIMITIVE  0x4000
+#define JNJVM_CLASS      0x10000
+#define JNJVM_ARRAY      0x20000
+#define JNJVM_PRIMITIVE  0x40000
 
 #define MK_VERIFIER(name, flag)                   \
   inline bool name(unsigned int param) {          \
@@ -53,6 +54,7 @@
 MK_VERIFIER(isFinal,      ACC_FINAL)
 MK_VERIFIER(isSuper,      ACC_SUPER)
 MK_VERIFIER(isSynthetic,  ACC_SYNTHETIC)
+MK_VERIFIER(isEnum,       ACC_ENUM)
 
 
 inline bool isVirtual(unsigned int param) {

Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.cpp?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.cpp Sun Sep 11 11:22:56 2011
@@ -884,7 +884,7 @@
   uint32 ctpSize = reader.readU2();
   ctpInfo = new(classLoader->allocator, ctpSize) JavaConstantPool(this, reader,
                                                                   ctpSize);
-  access |= (reader.readU2() & 0x0FFF);
+  access |= reader.readU2();
   
   if (!isPublic(access)) access |= ACC_PRIVATE;
 
@@ -1559,7 +1559,14 @@
         } else {
           // If the super is not a secondary type and the base class does not
           // implement any interface, we can reuse the list of secondary types
-          // of super.
+          // of super. If the base class is a primitive, the array class shares
+          // the same secondary types than the super of the current superVT
+          // (eg Object[][] for int[][]).
+          if (base->isPrimitive()) {
+            const UTF8* superName = JCL->constructArrayName(dim + 1, C->super->name);
+            super = JCL->constructArray(superName);
+            superVT = super->virtualVT;
+          }
           nbSecondaryTypes = superVT->nbSecondaryTypes;
           secondaryTypes = superVT->secondaryTypes;
         }

Modified: vmkit/trunk/lib/J3/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/J3/VMCore/JavaClass.h?rev=139482&r1=139481&r2=139482&view=diff
==============================================================================
--- vmkit/trunk/lib/J3/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/J3/VMCore/JavaClass.h Sun Sep 11 11:22:56 2011
@@ -174,7 +174,7 @@
 
   /// access - {public, private, protected}.
   ///
-  uint16 access;
+  uint32 access;
   
   /// interfaces - The interfaces this class implements.
   ///
@@ -209,7 +209,7 @@
   }
 
   // Assessor methods.
-  uint32 getAccess() const      { return access; }
+  uint32 getAccess() const      { return access & 0xFFFF; }
   Class** getInterfaces() const { return interfaces; }
   const UTF8* getName() const   { return name; }
   Class* getSuper() const       { return super; }





More information about the vmkit-commits mailing list