[vmkit-commits] [vmkit] r70202 - in /vmkit/trunk/lib/JnJVM: Compiler/JavaAOTCompiler.cpp LLVMRuntime/runtime-isolate.ll LLVMRuntime/runtime-single.ll VMCore/JavaClass.cpp VMCore/JavaClass.h VMCore/Jnjvm.cpp

Nicolas Geoffray nicolas.geoffray at lip6.fr
Mon Apr 27 02:01:44 PDT 2009


Author: geoffray
Date: Mon Apr 27 04:01:19 2009
New Revision: 70202

URL: http://llvm.org/viewvc/llvm-project?rev=70202&view=rev
Log:
Fix inner and outer when their index is zero and implement
anonymous classes.


Modified:
    vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp
    vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
    vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
    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/Compiler/JavaAOTCompiler.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp (original)
+++ vmkit/trunk/lib/JnJVM/Compiler/JavaAOTCompiler.cpp Mon Apr 27 04:01:19 2009
@@ -1016,6 +1016,9 @@
   // innerOuterResolved
   ClassElts.push_back(ConstantInt::get(Type::Int8Ty, cl->innerOuterResolved));
   
+  // isAnonymous
+  ClassElts.push_back(ConstantInt::get(Type::Int8Ty, cl->isAnonymous));
+  
   // virtualTableSize
   ClassElts.push_back(ConstantInt::get(Type::Int32Ty, cl->virtualTableSize));
   

Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-isolate.ll Mon Apr 27 04:01:19 2009
@@ -12,8 +12,8 @@
 %JavaClass = type { %JavaCommonClass, i32, [32 x %TaskClassMirror], i8*, 
                     %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16, 
                     %JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*, 
-                    i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*,
-                    void (i8*)* }
+                    i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32,
+                    i8*, void (i8*)* }
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;;;;;;;;;;;;;;;;;;;;; Isolate specific methods ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Modified: vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll (original)
+++ vmkit/trunk/lib/JnJVM/LLVMRuntime/runtime-single.ll Mon Apr 27 04:01:19 2009
@@ -9,5 +9,5 @@
 %JavaClass = type { %JavaCommonClass, i32, [1 x %TaskClassMirror], i8*,
                     %JavaField*, i16, %JavaField*, i16, %JavaMethod*, i16,
                     %JavaMethod*, i16, i8*, %ArrayUInt8*, i8*, %Attribut*,
-                    i16, %JavaClass**, i16, %JavaClass*, i16, i8, i32, i32, i8*,
-                    void (i8*)* }
+                    i16, %JavaClass**, i16, %JavaClass*, i16, i8, i8, i32, i32,
+                    i8*, void (i8*)* }

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Mon Apr 27 04:01:19 2009
@@ -947,11 +947,12 @@
       for (uint16 i = 0; i < nbi; ++i) {
         uint16 inner = reader.readU2();
         uint16 outer = reader.readU2();
-        //uint16 innerName = 
-        reader.readU2();
+        uint16 innerName = reader.readU2();
         uint16 accessFlags = reader.readU2();
-        UserClass* clInner = (UserClass*)ctpInfo->loadClass(inner);
-        UserClass* clOuter = (UserClass*)ctpInfo->loadClass(outer);
+        UserClass* clInner = 0;
+        UserClass* clOuter = 0;
+        if (inner) clInner = (UserClass*)ctpInfo->loadClass(inner);
+        if (outer) clOuter = (UserClass*)ctpInfo->loadClass(outer);
 
         if (clInner == this) {
           outerClass = clOuter;
@@ -961,6 +962,7 @@
               classLoader->allocator.Allocate(nbi * sizeof(Class*));
           }
           clInner->setInnerAccess(accessFlags);
+          if (!innerName) isAnonymous = true;
           innerClasses[nbInnerClasses++] = clInner;
         }
       }

Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Mon Apr 27 04:01:19 2009
@@ -672,6 +672,10 @@
   ///
   bool innerOuterResolved;
   
+  /// isAnonymous - Is the class an anonymous class?
+  ///
+  bool isAnonymous;
+
   /// virtualTableSize - The size of the virtual table of this class.
   ///
   uint32 virtualTableSize;

Modified: vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp?rev=70202&r1=70201&r2=70202&view=diff

==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/Jnjvm.cpp Mon Apr 27 04:01:19 2009
@@ -432,6 +432,7 @@
 }
 
 void Jnjvm::classFormatError(const char* msg, ...) {
+  JavaThread::get()->printBacktrace();
   error(upcalls->ClassFormatError,
         upcalls->InitClassFormatError, 
         msg);





More information about the vmkit-commits mailing list