[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